Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_GalleryCanvas.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 #ifndef _FUI_CTRL_INTERNAL_GALLERY_CANVAS_H_
18 #define _FUI_CTRL_INTERNAL_GALLERY_CANVAS_H_
19
20 #include <FBaseObject.h>
21 #include <FUiAnimVisualElementAnimationProvider.h>
22 #include "FUi_Control.h"
23 #include "FUiCtrl_GalleryTypes.h"
24
25 namespace Tizen { namespace Graphics {
26
27 class Rectangle;
28
29 }} // Tizen::Graphics
30
31 namespace Tizen { namespace Ui { namespace Animations {
32
33 class VisualElementPropertyAnimation;
34 class IVisualElementAnimationStatusEventListener;
35 class IVisualElementAnimationTimingFunction;
36 class _VisualElement;
37
38 }}} // Tizen::Ui::Animations
39
40 namespace Tizen { namespace Ui { namespace Controls {
41
42 class _GalleryBitmap;
43 class _GalleryRootCanvas;
44
45 class _GalleryAnimationProvider
46         : virtual public Tizen::Ui::Animations::VisualElementAnimationProvider
47 {
48 public:
49         _GalleryAnimationProvider(void);
50         virtual ~_GalleryAnimationProvider(void);
51         virtual Tizen::Ui::Animations::VisualElementAnimation* CreateAnimationForProperty(Tizen::Ui::Animations::VisualElement& source, const Tizen::Base::String& property);
52
53         void SetAnimationDelegator(Tizen::Ui::Animations::IVisualElementAnimationStatusEventListener* animationDelegator);
54         void SetGalleryAnimationTiming(_GalleryAnimationTiming animationTiming);
55
56         const Tizen::Ui::Animations::IVisualElementAnimationTimingFunction* GetTimingFunc(_GalleryAnimationTimingFunction timingFunction) const;
57
58 private:
59         Tizen::Ui::Animations::IVisualElementAnimationStatusEventListener* __pAnimationDelegator;
60         _GalleryAnimationTiming __animationTiming;
61 }; // _GalleryAnimationProvider
62
63 class _GalleryCanvas
64         : public Tizen::Base::Object
65 {
66 public:
67         virtual ~_GalleryCanvas(void);
68         static _GalleryCanvas* CreateGalleryCanvasN(Tizen::Graphics::Rectangle& canvasBounds);
69
70         result SetImage(const _GalleryBitmap* pImage, const Tizen::Graphics::Rectangle& viewBounds, _GalleryFittingType fittingType = GALLERY_FITTING_TYPE_FIT);
71         _GalleryBitmap* GetImage(void) const;
72         result SetBounds(const Tizen::Graphics::Rectangle& bounds);
73         const Tizen::Graphics::Rectangle& GetBounds(void) const;
74         Tizen::Ui::Animations::_VisualElement& GetImageVisualElement(void) const;
75         Tizen::Ui::Animations::_VisualElement& GetFrameVisualElement(void) const;
76         Tizen::Ui::Animations::VisualElementPropertyAnimation& GetAnimation(void) const;
77         result SetVisibility(bool visibility);
78         bool IsVisibility(void) const;
79         result RefreshCanvas(void);
80         result LoadImage(void);
81
82         result SetVisualElementBounds(const Tizen::Graphics::Rectangle& bounds);
83         Tizen::Graphics::Rectangle GetImageVisualElementBounds(void) const;
84
85         void SetImageBounds(const Tizen::Graphics::Rectangle& bounds);
86         Tizen::Graphics::Rectangle GetImageBounds(void) const;
87         Tizen::Graphics::Rectangle GetOriginalImageBounds(void) const;
88
89         result SetAnimationDelegator(_GalleryAnimationProvider* pVEDelegator);
90         void SetRootCanvas(_GalleryRootCanvas& rootCanvas);
91
92         void SetNeedUpdateImage(bool needUpdate);
93         bool IsNeedUpdateImage(void) const;
94
95         void SetCanvasFactor(float factor);
96         float GetCanvasFactor(void) const;
97
98         void SetImageAnchor(Tizen::Graphics::FloatPoint);
99         Tizen::Graphics::FloatPoint GetImageAnchor(void) const;
100
101         Tizen::Graphics::Rectangle GetAlignBoundary(void) const;
102
103         void SetClippingOfFrameVisualElement(bool clipping);
104
105         void SetImageAlignment(_GalleryVerticalAlignment imageVerticalAlignment
106                                                 , _GalleryHorizontalAlignment imageHorizontalAlignment);
107         void GetImageAlignment(_GalleryVerticalAlignment& imageVerticalAlignment
108                                                 , _GalleryHorizontalAlignment& imageHorizontalAlignment) const;
109
110 private:
111         _GalleryCanvas(_GalleryCanvas& rhs);
112         _GalleryCanvas& operator=(const _GalleryCanvas& rhs);
113
114         _GalleryCanvas(void);
115         result Construct(Tizen::Graphics::Rectangle& canvasBounds);
116
117         void SetImageVisualElement(Tizen::Ui::Animations::_VisualElement& visualElement);
118         void SetFrameVisualElement(Tizen::Ui::Animations::_VisualElement& visualElement);
119         void SetAnimation(Tizen::Ui::Animations::VisualElementPropertyAnimation& animation);
120
121 private:
122         Tizen::Ui::Animations::_VisualElement* __pImageVisualElement;
123         Tizen::Ui::Animations::_VisualElement* __pFrameVisualElement;
124         Tizen::Ui::Animations::VisualElementPropertyAnimation* __pAnimation;
125         Tizen::Graphics::Rectangle __bounds;
126         _GalleryBitmap* __pImage;
127         Tizen::Graphics::Rectangle __visableRegionOfImage;
128         bool __needUpdateImage;
129         bool __visualElementBoundsChanged;
130         Tizen::Graphics::Rectangle __imageBounds;
131         Tizen::Graphics::Rectangle __originalImageBounds;
132         _GalleryRootCanvas* __pRootCanvas;
133         float __factor;
134         Tizen::Graphics::FloatPoint __imageAnchor;
135         _GalleryVerticalAlignment __imageVerticalAlignment;
136         _GalleryHorizontalAlignment __imageHorizontalAlignment;
137 }; // _GalleryCanvas
138
139
140 class _GalleryRootCanvas
141         : public Tizen::Base::Object
142 {
143
144 public:
145         virtual ~_GalleryRootCanvas(void);
146         static _GalleryRootCanvas* CreateGalleryRootCanvasN(Tizen::Ui::_Control& control);
147
148         result SetBackgroundImage(const _GalleryBitmap* pImage);
149         _GalleryBitmap* GetBackgroundImage(void) const;
150         Tizen::Graphics::Color GetBackgroundColor(void) const;
151         result SetBounds(const Tizen::Graphics::Rectangle& bounds);
152         Tizen::Graphics::Rectangle GetBounds(void) const;
153         Tizen::Graphics::Dimension GetControlSize(void) const;
154         Tizen::Ui::Animations::_VisualElement* GetImageVisualElement(void) const;
155         result SetVisibility(bool visibility);
156         bool IsVisibility(void) const;
157         result AddChildCanvas(_GalleryCanvas& canvas);
158         result RemoveChildCanvas(_GalleryCanvas& canvas);
159         result RefreshCanvas(void);
160
161 private:
162         _GalleryRootCanvas(_Control& control);
163
164         void SetControl(Tizen::Ui::_Control& control);
165         Tizen::Ui::_Control& GetControl(void) const;
166
167 private:
168         Tizen::Ui::_Control* __pControl;
169         Tizen::Graphics::Rectangle __bounds;
170         _GalleryBitmap* __pBackgroundImage;
171         bool __needUpdateBackgroundImage;
172 }; // _GalleryRootCanvas
173
174 }}} // Tizen::Ui::Controls
175
176 #endif //_FUI_CTRL_INTERNAL_GALLERY_CANVAS_H_