1 #ifndef DALI_TOOLKIT_INTERNAL_LAYOUTING_LAYOUT_BASE_DATA_IMPL_H_H
2 #define DALI_TOOLKIT_INTERNAL_LAYOUTING_LAYOUT_BASE_DATA_IMPL_H_H
5 * Copyright (c) 2018 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.
20 #include <dali-toolkit/devel-api/layouting/layout-item-impl.h>
21 #include <dali-toolkit/devel-api/layouting/layout-controller.h>
22 #include <dali-toolkit/devel-api/layouting/layout-size.h>
33 class LayoutItem::Impl
39 BaseObject* mOwner; ///< Control or Visual that owns this layout. Raw pointer to prevent cyclic references
40 LayoutParent* mLayoutParent; ///< The containing layout parent.
42 MeasureSpec mOldWidthMeasureSpec;
43 MeasureSpec mOldHeightMeasureSpec;
44 LayoutSize mMinimumSize;
46 MeasuredSize mMeasuredWidth;
47 MeasuredSize mMeasuredHeight;
49 Extents mMargin; ///< Distances in pixels from the edges of this view to this view's parent.
50 Extents mPadding; ///< Distances in pixels from the edges of this view to this view's content.
58 * This view is visible.
59 * Use with {@link #setVisibility} and <a href="#attr_android:visibility">{@code
60 * android:visibility}.
62 static const int VISIBLE = 0x00000000;
65 * This view is invisible, but it still takes up space for layout purposes.
66 * Use with {@link #setVisibility} and <a href="#attr_android:visibility">{@code
67 * android:visibility}.
69 static const int INVISIBLE = 0x00000004;
72 * This view is invisible, and it doesn't take any space for layout
73 * purposes. Use with {@link #setVisibility} and <a href="#attr_android:visibility">{@code
74 * android:visibility}.
76 static const int GONE = 0x00000008;
79 * Mask for use with setFlags indicating bits used for visibility.
82 static const int VISIBILITY_MASK = 0x0000000C;
84 static const int PRIVATE_FLAG_MEASURED_DIMENSION_SET = 0x00000001;
85 static const int PRIVATE_FLAG_FORCE_LAYOUT = 0x00000002;
86 static const int PRIVATE_FLAG_LAYOUT_REQUIRED = 0x00000004;
87 static const int PRIVATE_FLAG_IS_LAID_OUT = 0x00000008;
88 static const int PRIVATE_FLAG_MEASURE_NEEDED_BEFORE_LAYOUT = 0x00000010; ///< Flag indicating that a call to measure() was skipped and should be done instead when layout() is invoked.
89 static const int PRIVATE_FLAG_HAS_BOUNDS = 0x00000020;
96 inline void ClearPrivateFlag( int flag )
98 mPrivateFlags &= ~flag;
101 inline void SetPrivateFlag( int flag )
103 mPrivateFlags |= flag;
106 inline bool GetPrivateFlag( int flag )
108 return ( mPrivateFlags & flag ) != 0;
111 static bool sUseZeroUnspecifiedMeasureSpec;
115 } // namespace Internal
116 } // namespace Toolkit
119 #endif //DALI_TOOLKIT_INTERNAL_LAYOUTING_LAYOUT_BASE_DATA_IMPL_H_H