Added some LayoutEngine skeleton code
[platform/core/uifw/dali-toolkit.git] / base / dali-toolkit / public-api / text / layouts / layout-engine.h
1 #ifndef __DALI_TOOLKIT_TEXT_LAYOUT_ENGINE_H__
2 #define __DALI_TOOLKIT_TEXT_LAYOUT_ENGINE_H__
3
4 /*
5  * Copyright (c) 2015 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 namespace Dali
22 {
23
24 struct Vector2;
25
26 namespace Toolkit
27 {
28
29 namespace Text
30 {
31
32 class LogicalModel;
33 class VisualModel;
34
35 /**
36  * @brief LayoutEngine is responsible for calculating the visual position of glyphs in layout.
37  */
38 class LayoutEngine
39 {
40 public:
41
42   enum Layout
43   {
44     SINGLE_LINE_BOX,
45     MULTI_LINE_BOX
46   };
47
48   /**
49    * @brief Create a new instance of a LayoutEngine.
50    */
51   LayoutEngine();
52
53   /**
54    * @brief Virtual destructor.
55    */
56   ~LayoutEngine();
57
58   /**
59    * @brief Choose the required layout.
60    *
61    * @param[in] layout The required layout.
62    */
63   void SetLayout( Layout layout );
64
65   /**
66    * @brief Store the visual position of glyphs in the VisualModel.
67    *
68    * @param[in] boundingBox The size of the box containing the text.
69    * @param[in] logicalModel The logical model.
70    * @param[in] visualModel The visual model to update.
71    */
72   void UpdateVisualModel( const Vector2& boundingBox, const LogicalModel& logicalModel, VisualModel& visualModel );
73
74 private:
75
76   // Undefined
77   LayoutEngine( const LayoutEngine& handle );
78
79   // Undefined
80   LayoutEngine& operator=( const LayoutEngine& handle );
81
82 private:
83
84   struct Impl;
85   Impl* mImpl;
86 };
87 } // namespace Text
88
89 } // namespace Toolkit
90
91 } // namespace Dali
92
93 #endif // __DALI_TOOLKIT_TEXT_LAYOUT_ENGINE_H__