Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUi_UiBuilderControlMaker.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://floralicense.org/license/
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 /**
18 * @file    FUi_UiBuilderControlMaker.h
19 * @brief      This is the header file for the %_UiBuilderControlMaker class.
20 *
21 * This header file contains the declarations of the %_UiBuilderControlMaker class.
22 */
23
24 #ifndef _FUI_INTERNAL_UI_BUILDER_CONTROL_MAKER_H_
25 #define _FUI_INTERNAL_UI_BUILDER_CONTROL_MAKER_H_
26
27 #include <FUiCtrlControlsTypes.h>
28 #include <FUiCtrlGalleryTypes.h>
29 #include <FUiLayout.h>
30 #include <FUiVerticalBoxLayout.h>
31 #include <FUiHorizontalBoxLayout.h>
32 #include <FUiRelativeLayout.h>
33 #include <FUiGridLayout.h>
34 #include <FUiControl.h>
35 #include <FUiCtrlSplitPanel.h>
36 #include <FGrp_CoordinateSystem.h>
37 #include "FUi_UiBuilderConfig.h"
38 #include "FUi_UiBuilderControl.h"
39
40
41
42 namespace Tizen { namespace Ui
43 {
44
45 struct UiBuilderRelativeLayout
46 {
47         Tizen::Ui::Control* pBottomRelation;
48         RectangleEdgeRelation bottomRelationType;
49
50         Tizen::Ui::Control* pLeftRelation;
51         RectangleEdgeRelation leftRelationType;
52
53         Tizen::Ui::Control* pRightRelation;
54         RectangleEdgeRelation rightRelationType;
55
56         Tizen::Ui::Control* pTopRelation;
57         RectangleEdgeRelation topRelationType;
58
59         bool centerHorizontal;
60         bool centerVertical;
61
62         int height;
63         FitPolicy verticalFitPolicy;
64
65         int marginBottom;
66         int marginLeft;
67         int marginRight;
68         int marginTop;
69
70         int width;
71         FitPolicy horizontalFitPolicy;
72 };
73
74 struct UiBuilderGridLayoutContainer
75 {
76         int maxColumn;
77         int maxRow;
78         int columnSpacing;
79         int rowSpacing;
80         bool columnCollapsed;
81         bool columnShrinkable;
82         bool columnStretchable;
83         bool rowCollapsed;
84         bool rowShrinkable;
85         bool rowStretchable;
86 };
87
88 struct UiBuilderGridLayoutControl
89 {
90         int marginBottom;
91         int marginLeft;
92         int marginRight;
93         int marginTop;
94         int positionRow;
95         int positionColumn;
96         int positionRowSpan;
97         int positionColumnSpan;
98         LayoutHorizontalAlignment horizontalAlignment;
99         LayoutVerticalAlignment verticalAlignment;
100 };
101
102 struct UiBuilderHorizontalBoxLayoutContainer
103 {
104         HorizontalDirection direction;
105 };
106
107 struct UiBuilderHorizontalBoxLayoutControl
108 {
109         int height;
110         FitPolicy verticalFitPolicy;
111         LayoutVerticalAlignment verticalAlignment;
112         int verticalBottomMargin;
113         int verticalTopMargin;
114         int spacing;
115         float weight;
116         int width;
117         FitPolicy horizontalFitPolicy;
118 };
119
120 struct UiBuilderVerticalBoxLayoutContainer
121 {
122         VerticalDirection direction;
123 };
124
125 struct UiBuilderVerticalBoxLayoutControl
126 {
127         int height;
128         FitPolicy verticalFitPolicy;
129         LayoutHorizontalAlignment horizontalAlignment;
130         int horizontalLeftMargin;
131         int horizontalRightMargin;
132         int spacing;
133         float weight;
134         int width;
135         FitPolicy horizontalFitPolicy;
136 };
137
138 class _UiBuilder;
139 /**
140 * @class   _UiBuilderControlMaker
141 * @brief      This class is an implementation of a %_UiBuilderControlMaker.
142 * @since 2.0
143 *
144 * The %_UiBuilderControlMaker Class contains that information for generating a Control and setting a layout information.
145 *
146 *
147 */
148 class _OSP_EXPORT_ _UiBuilderControlMaker
149         : public Tizen::Base::Object
150 {
151 public:
152         _UiBuilderControlMaker(void);
153         _UiBuilderControlMaker(_UiBuilder* pUibuilder);
154         virtual ~_UiBuilderControlMaker(void);
155         result MakeControl(_UiBuilderControl* pControl);
156
157 protected:
158         virtual Tizen::Ui::Control* Make(_UiBuilderControl* pControl) = 0;
159         Tizen::Ui::Container* GetContainer(void) const;
160         Tizen::Graphics::Bitmap* LoadBitmapN(const Tizen::Base::String& imagePath);
161         bool ConvertHAlignToHorizontalAlignment(const Tizen::Base::String& align, Tizen::Ui::Controls::HorizontalAlignment& alignment);
162         bool ConvertVAlignToVerticalAlignment(const Tizen::Base::String& align, Tizen::Ui::Controls::VerticalAlignment& alignment);
163         bool ConvertSlideShowAnimation(const Tizen::Base::String& animationType, Tizen::Ui::Controls::GalleryAnimation& animation);
164         int ConvertOpacity100to255(int opacity);
165         void ConvertStringToColor(const Tizen::Base::String& colorString, Tizen::Graphics::Color& color);
166         void ConvertStringToColor32(const Tizen::Base::String& colorString, int transparency, Tizen::Graphics::Color& color);
167         void AddControl(_UiBuilderControl* pUiBuilderControl, Tizen::Ui::Control* pControl);
168         void SetUiBuilderRotateState(_UiBuilderScreenRotate rotate);
169         result SetGridLayoutContainerProperty(GridLayout* pLayout, _UiBuilderControlLayout* pControlProperty) const;
170         void SetGridLayoutControlProperty(GridLayout* pLayout, _UiBuilderControlLayout* pControlProperty, Control* pControl);
171         void SetHorizontalBoxLayoutProperty(HorizontalBoxLayout* pLayout, _UiBuilderControlLayout* pControlProperty, Control* pControl);
172         void SetVerticalBoxLayoutProperty(VerticalBoxLayout* pLayout, _UiBuilderControlLayout* pControlProperty, Control* pControl);
173         void SetRelativeLayoutProperty(RelativeLayout* pLayout, _UiBuilderControlLayout* pControlProperty, Control* pControl);
174         void SetLayoutProperty(_UiBuilderControl* pUiBuilderControl, Control* pControl);
175         void SetLayoutOrientation(_UiBuilderControl* pUiBuilderCOntrol, Tizen::Ui::Control* pControl);
176         void GetProperty(_UiBuilderControl* pControl, _UiBuilderControlLayout** pControlProperty) const;
177         bool GetLayoutType(_UiBuilderControlLayout* pControlProperty, _UiBuilderLayoutType& layoutType) const;
178         bool GetParentLayoutType(_UiBuilderControlLayout* pControlProperty, _UiBuilderLayoutType& returnType) const;
179         result GetGridLayoutN(_UiBuilderControlLayout* pControlProperty, Layout*& pLayout) const;
180         result GetHorizontalBoxLayoutN(_UiBuilderControlLayout* pControlProperty, Layout*& pLayout) const;
181         result GetVerticalBoxLayoutN(_UiBuilderControlLayout* pControlProperty, Layout*& pLayout) const;
182         result GetRelativeLayoutN(_UiBuilderControlLayout* pControlProperty, Layout*& pLayout) const;
183         _UiBuilderScreenRotate GetUiBuilderRotateState(void);
184         result GetLayoutN(_UiBuilderControl* pUiBuilderControl, Layout*& pPortraitLayout, Layout*& pLandscapeLayout) const ;
185         Tizen::Graphics::_ICoordinateSystemTransformer* GetTransformer(void) const;
186
187 private:
188         _UiBuilderControlMaker(const _UiBuilderControlMaker& rhs);
189         _UiBuilderControlMaker& operator =(const _UiBuilderControlMaker& rhs);
190
191 private:
192         _UiBuilder* __pUiBuilder;
193 }; // _UiBuilderControlMaker
194
195 } } // Tizen::Ui
196
197 #endif  //_FUI_INTERNAL_UI_BUILDER_CONTROL_MAKER_H_
198
199