1 #ifndef DALI_TOOLKIT_INTERNAL_LAYOUTING_HBOX_LAYOUT_H
2 #define DALI_TOOLKIT_INTERNAL_LAYOUTING_HBOX_LAYOUT_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/public-api/common/intrusive-ptr.h>
21 #include <dali/public-api/object/base-object.h>
22 #include <dali-toolkit/devel-api/layouting/layout-group-impl.h>
23 #include <dali-toolkit/devel-api/layouting/hbox-layout.h>
33 using HboxLayoutPtr = IntrusivePtr<HboxLayout>;
35 class HboxLayout final : public LayoutGroup
38 static HboxLayoutPtr New();
41 void SetCellPadding( LayoutSize size );
42 LayoutSize GetCellPadding();
46 virtual ~HboxLayout();
49 * @copydoc LayoutBase::DoInitialize
51 virtual void DoInitialize() override;
54 * @copydoc LayoutBase::DoRegisterChildProperties()
56 virtual void DoRegisterChildProperties( const std::string& containerType ) override;
59 * @copydoc LayoutBase::OnChildAdd
61 virtual void OnChildAdd( LayoutBase& child ) override;
64 * @copydoc LayoutBase::OnMeasure
66 virtual void OnMeasure( MeasureSpec widthMeasureSpec, MeasureSpec heightMeasureSpec ) override;
69 * @copydoc LayoutBase::OnLayout
71 virtual void OnLayout( bool changed, LayoutLength l, LayoutLength t, LayoutLength r, LayoutLength b ) override;
74 HboxLayout( const HboxLayout& other ) = delete;
75 HboxLayout& operator=( const HboxLayout& other ) = delete;
77 void ForceUniformHeight( int count, MeasureSpec widthMeasureSpec );
80 LayoutSize mCellPadding;
81 LayoutLength mTotalLength;
84 } // namespace Internal
86 inline Internal::HboxLayout& GetImplementation( Dali::Toolkit::HboxLayout& handle )
88 DALI_ASSERT_ALWAYS( handle && "HboxLayout handle is empty" );
89 BaseObject& object = handle.GetBaseObject();
90 return static_cast<Internal::HboxLayout&>( object );
93 inline const Internal::HboxLayout& GetImplementation( const Dali::Toolkit::HboxLayout& handle )
95 DALI_ASSERT_ALWAYS( handle && "HboxLayout handle is empty" );
96 const BaseObject& object = handle.GetBaseObject();
97 return static_cast<const Internal::HboxLayout&>( object );
100 } // namespace Toolkit
103 #endif // DALI_TOOLKIT_INTERNAL_LAYOUTING_HBOX_LAYOUT_H