Add ObjectView::SetVisibilityState() API.
[platform/core/uifw/pepper-dali.git] / pepper-dali / internal / object-view-impl.h
1 #ifndef __DALI_PEPPER_INTERNAL_OBJECT_VIEW_H__
2 #define __DALI_PEPPER_INTERNAL_OBJECT_VIEW_H__
3
4 /*
5  * Copyright (c) 2016 Samsung Electronics Co., Ltd.
6  *
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
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
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.
18  *
19  */
20
21 // INTERNAL INCLUDES
22 #include <pepper-dali/public-api/object-view/object-view.h>
23
24 // EXTERNAL INCLUDES
25 #include <dali/public-api/images/buffer-image.h>
26 #include <dali-toolkit/public-api/controls/control-impl.h>
27 #include <dali-toolkit/public-api/controls/image-view/image-view.h>
28 #include <pepper.h>
29
30 namespace Dali
31 {
32
33 namespace Pepper
34 {
35
36 namespace Internal
37 {
38
39 class ObjectView : public Toolkit::Internal::Control
40 {
41 public:
42
43   /**
44    * @copydoc Dali::Pepper::ObjectView::New
45    */
46   static Dali::Pepper::ObjectView New();
47
48   /**
49    * @copydoc Dali::Pepper::ObjectView::SetImage
50    */
51   void SetImage( Image image );
52
53   /**
54    * @copydoc Dali::Pepper::ObjectView::GetPid
55    */
56   pid_t GetPid() const;
57
58   /**
59    * @copydoc Dali::Pepper::ObjectView::GetTitle
60    */
61   std::string GetTitle() const;
62
63   /**
64    * @copydoc Dali::Pepper::ObjectView::GetAppId
65    */
66   std::string GetAppId() const;
67
68   /**
69    * @copydoc Dali::Pepper::ObjectView::CancelTouchEvent
70    */
71   bool CancelTouchEvent();
72
73   /**
74    * @copydoc Dali::Pepper::ObjectView::Show
75    */
76   void Show();
77
78   /**
79    * @copydoc Dali::Pepper::ObjectView::Hide
80    */
81   void Hide();
82
83   /**
84    * @copydoc Dali::Pepper::ObjectView::SetVisibilityState
85    */
86   void SetVisibilityState( Pepper::ObjectView::VisibilityState state );
87
88   /**
89    * Set pepper surface
90    */
91   void SetSurface( pepper_surface_t* surface );
92
93   /**
94    * Set pepper input modules
95    */
96   void SetInput( pepper_pointer_t* pointer, pepper_keyboard_t* keyboard, pepper_touch_t* touch );
97
98 protected:
99
100   /**
101    * Construct a new ObjectView.
102    */
103   ObjectView();
104
105   /**
106    * A reference counted object may only be deleted by calling Unreference()
107    */
108   virtual ~ObjectView();
109
110 private: // From Control
111
112   /**
113    * @copydoc Dali::Toolkit::Control::OnInitialize()
114    */
115   virtual void OnInitialize();
116
117 private: // From CustomActorImpl
118
119   /**
120    * @copydoc Dali::CustomActorImpl::OnTouchEvent( const TouchEvent& event )
121    */
122   virtual bool OnTouchEvent( const TouchEvent& event );
123
124   /**
125    * @copydoc CustomActorImpl::OnSizeSet( const Vector3& targetSize )
126    */
127   virtual void OnSizeSet( const Vector3& targetSize );
128
129 private:
130
131   // Undefined
132   ObjectView( const ObjectView& );
133
134   // Undefined
135   ObjectView& operator= ( const ObjectView& );
136
137   static void OnConfigureCallback( void* data, int width, int height );
138
139 private:
140
141   Toolkit::ImageView mImageView;
142   BufferImage mBufferImage;
143
144   int mWidth;
145   int mHeight;
146
147   bool mTouchDown;
148
149   pepper_surface_t* mSurface;
150   pepper_pointer_t* mPointer;
151   pepper_keyboard_t* mKeyboard;
152   pepper_touch_t* mTouch;
153 };
154
155 } // namespace Internal
156
157 // Helpers for public-api forwarding methods
158
159 inline Pepper::Internal::ObjectView& GetImplementation( Pepper::ObjectView& objectView )
160 {
161   DALI_ASSERT_ALWAYS( objectView );
162
163   Dali::RefObject& handle = objectView.GetImplementation();
164
165   return static_cast<Internal::ObjectView&>( handle );
166 }
167
168 inline const Pepper::Internal::ObjectView& GetImplementation( const Pepper::ObjectView& objectView )
169 {
170   DALI_ASSERT_ALWAYS( objectView );
171
172   const Dali::RefObject& handle = objectView.GetImplementation();
173
174   return static_cast<const Internal::ObjectView&>( handle );
175 }
176
177 } // namespace Pepper
178
179 } // namespace Dali
180
181 #endif // __DALI_PEPPER_INTERNAL_OBJECT_VIEW_H__