Merge "Fix nested layout issue" into devel/master
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / devel-api / layouting / layout-size.h
1 #ifndef DALI_TOOLKIT_DEVEL_LAYOUT_SIZE_H
2 #define DALI_TOOLKIT_DEVEL_LAYOUT_SIZE_H
3
4 /*
5  * Copyright (c) 2018 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 #include <dali-toolkit/devel-api/layouting/layout-length.h>
21
22 namespace Dali
23 {
24 namespace Toolkit
25 {
26
27 /**
28  * This class represents a layout size (width and height)
29  */
30 class LayoutSize
31 {
32 public:
33   LayoutSize()
34   : x(0u),
35     y(0u)
36   {
37   }
38
39   LayoutSize( LayoutLength::IntType anX, LayoutLength::IntType aY )
40   : x( anX ),
41     y( aY )
42   {
43   }
44
45   LayoutSize( const LayoutSize& layoutSize )
46   : x( layoutSize.x ),
47     y( layoutSize.y )
48   {
49   }
50
51   LayoutSize& operator=(const LayoutSize& rhs)
52   {
53     x = rhs.x;
54     y = rhs.y;
55     return *this;
56   }
57
58   LayoutLength::IntType GetWidth()
59   {
60     return width;
61   }
62
63   LayoutLength::IntType GetHeight()
64   {
65     return height;
66   }
67
68   void SetWidth(LayoutLength::IntType value)
69   {
70     width=value;
71   }
72   void SetHeight(LayoutLength::IntType value)
73   {
74     height=value;
75   }
76   void SetWidth(LayoutLength value)
77   {
78     width=value.mValue;
79   }
80   void SetHeight(LayoutLength value)
81   {
82     height=value.mValue;
83   }
84
85   bool operator==( const LayoutSize& rhs )
86   {
87     return x==rhs.x && y==rhs.y;
88   }
89
90   union
91   {
92     LayoutLength::IntType x;
93     LayoutLength::IntType width;
94   };
95
96   union
97   {
98     LayoutLength::IntType y;
99     LayoutLength::IntType height;
100   };
101 };
102
103 /**
104  * @brief Prints a LayoutSize
105  *
106  * @param[in] o The output stream operator
107  * @param[in] layoutSize the layout size to print
108  * @return The output stream operator
109  */
110 inline std::ostream& operator<< (std::ostream& o, const LayoutSize& layoutSize)
111 {
112   return o << "[" << layoutSize.x << ", " << layoutSize.y << "]";
113 }
114
115 } // namespace Toolkit
116
117 } // namespace Dali
118
119 #endif //DALI_TOOLKIT_DEVEL_LAYOUT_SIZE_H