6ffe97a724eb1cbdb35edc0f6eda19b72e95bb21
[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    * Set pepper surface
85    */
86   void SetSurface( pepper_surface_t* surface );
87
88   /**
89    * Set pepper input modules
90    */
91   void SetInput( pepper_pointer_t* pointer, pepper_keyboard_t* keyboard, pepper_touch_t* touch );
92
93 protected:
94
95   /**
96    * Construct a new ObjectView.
97    */
98   ObjectView();
99
100   /**
101    * A reference counted object may only be deleted by calling Unreference()
102    */
103   virtual ~ObjectView();
104
105 private: // From Control
106
107   /**
108    * @copydoc Dali::Toolkit::Control::OnInitialize()
109    */
110   virtual void OnInitialize();
111
112 private: // From CustomActorImpl
113
114   /**
115    * @copydoc Dali::CustomActorImpl::OnTouchEvent( const TouchEvent& event )
116    */
117   virtual bool OnTouchEvent( const TouchEvent& event );
118
119   /**
120    * @copydoc CustomActorImpl::OnSizeSet( const Vector3& targetSize )
121    */
122   virtual void OnSizeSet( const Vector3& targetSize );
123
124 private:
125
126   // Undefined
127   ObjectView( const ObjectView& );
128
129   // Undefined
130   ObjectView& operator= ( const ObjectView& );
131
132   static void OnConfigureCallback( void* data, int width, int height );
133
134 private:
135
136   Toolkit::ImageView mImageView;
137   BufferImage mBufferImage;
138
139   int mWidth;
140   int mHeight;
141
142   bool mTouchDown;
143
144   pepper_surface_t* mSurface;
145   pepper_pointer_t* mPointer;
146   pepper_keyboard_t* mKeyboard;
147   pepper_touch_t* mTouch;
148 };
149
150 } // namespace Internal
151
152 // Helpers for public-api forwarding methods
153
154 inline Pepper::Internal::ObjectView& GetImplementation( Pepper::ObjectView& objectView )
155 {
156   DALI_ASSERT_ALWAYS( objectView );
157
158   Dali::RefObject& handle = objectView.GetImplementation();
159
160   return static_cast<Internal::ObjectView&>( handle );
161 }
162
163 inline const Pepper::Internal::ObjectView& GetImplementation( const Pepper::ObjectView& objectView )
164 {
165   DALI_ASSERT_ALWAYS( objectView );
166
167   const Dali::RefObject& handle = objectView.GetImplementation();
168
169   return static_cast<const Internal::ObjectView&>( handle );
170 }
171
172 } // namespace Pepper
173
174 } // namespace Dali
175
176 #endif // __DALI_PEPPER_INTERNAL_OBJECT_VIEW_H__