[dali_1.3.41] Merge branch '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   bool operator!=( const LayoutSize& rhs )
91   {
92     return !( *this==rhs );
93   }
94
95   union
96   {
97     LayoutLength::IntType x;
98     LayoutLength::IntType width;
99   };
100
101   union
102   {
103     LayoutLength::IntType y;
104     LayoutLength::IntType height;
105   };
106 };
107
108 /**
109  * @brief Prints a LayoutSize
110  *
111  * @param[in] o The output stream operator
112  * @param[in] layoutSize the layout size to print
113  * @return The output stream operator
114  */
115 inline std::ostream& operator<< (std::ostream& o, const LayoutSize& layoutSize)
116 {
117   return o << "[" << layoutSize.x << ", " << layoutSize.y << "]";
118 }
119
120 } // namespace Toolkit
121
122 } // namespace Dali
123
124 #endif //DALI_TOOLKIT_DEVEL_LAYOUT_SIZE_H