1 /** Copyright (c) 2017 Samsung Electronics Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
17 namespace Tizen.NUI.BaseComponents
20 /// FlexContainer implements a subset of the flexbox spec (defined by W3C):https://www.w3.org/TR/css3-flexbox/<br>
21 /// It aims at providing a more efficient way to lay out, align and distribute space among items in the container, even when their size is unknown or dynamic.<br>
22 /// FlexContainer has the ability to alter the width and height of its children (i.e. flex items) to fill the available space in the best possible way on different screen sizes.<br>
23 /// FlexContainer can expand items to fill available free space, or shrink them to prevent overflow.<br>
25 public class FlexContainer : View
27 private global::System.Runtime.InteropServices.HandleRef swigCPtr;
29 internal FlexContainer(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicPINVOKE.FlexContainer_SWIGUpcast(cPtr), cMemoryOwn)
31 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
34 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(FlexContainer obj)
36 return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
39 protected override void Dispose(DisposeTypes type)
46 if(type == DisposeTypes.Explicit)
49 //Release your own managed resources here.
50 //You should release all of your own disposable objects here.
53 //Release your own unmanaged resources here.
54 //You should not access any managed member here except static instance.
55 //because the execution order of Finalizes is non-deterministic.
57 if (swigCPtr.Handle != global::System.IntPtr.Zero)
62 NDalicPINVOKE.delete_FlexContainer(swigCPtr);
64 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
71 internal class Property
73 internal static readonly int CONTENT_DIRECTION = NDalicPINVOKE.FlexContainer_Property_CONTENT_DIRECTION_get();
74 internal static readonly int FLEX_DIRECTION = NDalicPINVOKE.FlexContainer_Property_FLEX_DIRECTION_get();
75 internal static readonly int FLEX_WRAP = NDalicPINVOKE.FlexContainer_Property_FLEX_WRAP_get();
76 internal static readonly int JUSTIFY_CONTENT = NDalicPINVOKE.FlexContainer_Property_JUSTIFY_CONTENT_get();
77 internal static readonly int ALIGN_ITEMS = NDalicPINVOKE.FlexContainer_Property_ALIGN_ITEMS_get();
78 internal static readonly int ALIGN_CONTENT = NDalicPINVOKE.FlexContainer_Property_ALIGN_CONTENT_get();
83 /// Enumeration for the instance of child properties belonging to the FlexContainer class.
85 public class ChildProperty
87 internal static readonly int FLEX = NDalicPINVOKE.FlexContainer_ChildProperty_FLEX_get();
88 internal static readonly int ALIGN_SELF = NDalicPINVOKE.FlexContainer_ChildProperty_ALIGN_SELF_get();
89 internal static readonly int FLEX_MARGIN = NDalicPINVOKE.FlexContainer_ChildProperty_FLEX_MARGIN_get();
93 /// Creates a FlexContainer handle.
94 /// Calling member functions with an uninitialized handle is not allowed.
96 public FlexContainer() : this(NDalicPINVOKE.FlexContainer_New(), true)
98 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
103 /// Enumeration for the direction of the main axis in the flex container. This determines
104 /// the direction that flex items are laid out in the flex container.
106 public enum FlexDirectionType
115 /// Enumeration for the primary direction in which content is ordered in the flex container
116 /// and on which sides the ?�start??and ?�end??are.
118 public enum ContentDirectionType
126 /// Enumeration for the alignment of the flex items when the items do not use all available
127 /// space on the main-axis.
129 public enum Justification
139 /// Enumeration for the alignment of the flex items or lines when the items or lines do not
140 /// use all the available space on the cross-axis.
142 public enum Alignment
152 /// Enumeration for the wrap type of the flex container when there is no enough room for
153 /// all the items on one flex line.
162 /// The primary direction in which content is ordered
164 public ContentDirectionType ContentDirection
169 GetProperty(FlexContainer.Property.CONTENT_DIRECTION).Get(out temp);
170 return (ContentDirectionType)temp;
174 SetProperty(FlexContainer.Property.CONTENT_DIRECTION, new Tizen.NUI.PropertyValue((int)value));
179 /// The direction of the main-axis which determines the direction that flex items are laid out
181 public FlexDirectionType FlexDirection
186 GetProperty(FlexContainer.Property.FLEX_DIRECTION).Get(out temp);
187 return (FlexDirectionType)temp;
191 SetProperty(FlexContainer.Property.FLEX_DIRECTION, new Tizen.NUI.PropertyValue((int)value));
196 /// Whether the flex items should wrap or not if there is no enough room for them on one flex line
198 public WrapType FlexWrap
203 GetProperty(FlexContainer.Property.FLEX_WRAP).Get(out temp);
204 return (WrapType)temp;
208 SetProperty(FlexContainer.Property.FLEX_WRAP, new Tizen.NUI.PropertyValue((int)value));
213 /// The alignment of flex items when the items do not use all available space on the main-axis
215 public Justification JustifyContent
220 GetProperty(FlexContainer.Property.JUSTIFY_CONTENT).Get(out temp);
221 return (Justification)temp;
225 SetProperty(FlexContainer.Property.JUSTIFY_CONTENT, new Tizen.NUI.PropertyValue((int)value));
230 /// The alignment of flex items when the items do not use all available space on the cross-axis
232 public Alignment AlignItems
237 GetProperty(FlexContainer.Property.ALIGN_ITEMS).Get(out temp);
238 return (Alignment)temp;
242 SetProperty(FlexContainer.Property.ALIGN_ITEMS, new Tizen.NUI.PropertyValue((int)value));
247 /// Similar to "alignItems", but it aligns flex lines, so only works when there are multiple lines
249 public Alignment AlignContent
254 GetProperty(FlexContainer.Property.ALIGN_CONTENT).Get(out temp);
255 return (Alignment)temp;
259 SetProperty(FlexContainer.Property.ALIGN_CONTENT, new Tizen.NUI.PropertyValue((int)value));