1 #ifndef __DALI_EXTENSION_INTERNAL_EVAS_EVENT_HANDLER__
2 #define __DALI_EXTENSION_INTERNAL_EVAS_EVENT_HANDLER__
5 * Copyright (c) 2019 Samsung Electronics Co., Ltd.
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
24 #include <Elementary.h>
25 #include <Ecore_Wl2.h>
26 #include <Ecore_Input.h>
27 #include <Ecore_IMF.h>
28 #include <Ecore_IMF_Evas.h>
30 #include <dali/public-api/events/touch-point.h>
31 #include <dali/public-api/events/wheel-event.h>
32 #include <dali/public-api/events/key-event.h>
33 #include <dali/public-api/math/rect.h>
34 // #include <dali/integration-api/adaptors/input-method-context.h>
39 #include "evas-plugin-event-interface.h"
58 class EvasPluginEventInterface;
60 class EvasEventHandler
66 * @param[in] imageEvasObject is stream showing the pixmap which is drawn by dali
69 * @param[in] evasPluginEventInterface Used to send event to evas plugin
71 EvasEventHandler(Evas_Object* imageEvasObject,
72 Evas_Object* elmAccessEvasObject,
73 Evas_Object* elmFocusEvasObject,
74 EvasPluginEventInterface& evasPluginEventInterface);
83 EvasPluginEventInterface& GetEvasPluginInterface() { return mEvasPluginEventInterface; }
87 /////////////////////////////////////////////////////////////////////////////////////////////////////
89 /////////////////////////////////////////////////////////////////////////////////////////////////////
92 * @brief Called when the mouse down is received
94 static void OnEvasObjectMouseDown(void *data, Evas* evas, Evas_Object* evasObject, void* event);
97 * @brief Called when the mouse up is received
99 static void OnEvasObjectMouseUp(void *data, Evas* evas, Evas_Object* evasObject, void* event);
102 * @brief Called when the mouse move is received
104 static void OnEvasObjectMouseMove(void *data, Evas* evas, Evas_Object* evasObject, void* event);
107 * @brief Called when the mouse wheel is received
109 static void OnEvasObjectMouseWheel(void *data, Evas* evas, Evas_Object* evasObject, void* event);
112 * @brief Called when the multi-touch down is received
114 static void OnEvasObjectMultiTouchDown(void *data, Evas* evas, Evas_Object* evasObject, void* event);
117 * @brief Called when the multi-touch up is received
119 static void OnEvasObjectMultiTouchUp(void *data, Evas* evas, Evas_Object* evasObject, void* event);
122 * @brief Called when the multi-touch move is received
124 static void OnEvasObjectMultiTouchMove(void *data, Evas* evas, Evas_Object* evasObject, void* event);
127 * @brief Called when key down is received
129 static void OnEvasObjectKeyDown(void *data, Evas* evas, Evas_Object* evasObject, void* event);
132 * @brief Called when key up is received
134 static void OnEvasObjectKeyUp(void *data, Evas* evas, Evas_Object* evasObject, void* event);
136 /////////////////////////////////////////////////////////////////////////////////////////////////////
137 // Geometry callbacks
138 /////////////////////////////////////////////////////////////////////////////////////////////////////
141 * @brief Called when move is received
143 static void OnEvasObjectMove(void *data, Evas* evas, Evas_Object* evasObject, void* event);
146 * @brief Called when resize is received
148 static void OnEvasObjectResize(void *data, Evas* evas, Evas_Object* evasObject, void* event);
150 /////////////////////////////////////////////////////////////////////////////////////////////////////
152 /////////////////////////////////////////////////////////////////////////////////////////////////////
155 * @brief Called when evas object focus in is received
157 static void OnEvasObjectFocusIn(void *data, Evas* evas, Evas_Object* evasObject, void* event);
160 * @brief Called when evas object focus out is received
162 static void OnEvasObjectFocusOut(void *data, Evas* evas, Evas_Object* evasObject, void* event);
165 * @brief Called when evas focus in is received
167 static void OnEvasFocusIn(void *data, Evas* evas, void* event);
170 * @brief Called when evas focus out is received
172 static void OnEvasFocusOut(void *data, Evas* evas, void* event);
174 /////////////////////////////////////////////////////////////////////////////////////////////////////
176 /////////////////////////////////////////////////////////////////////////////////////////////////////
179 * @brief Called when evas render post
181 static void OnEvasRenderPost(void *data, Evas* evas, void* event);
183 /////////////////////////////////////////////////////////////////////////////////////////////////////
184 // Elm Access callbacks
185 /////////////////////////////////////////////////////////////////////////////////////////////////////
187 static Eina_Bool OnElmAccessActionHighlight(void* data, Evas_Object* evasObject, Elm_Access_Action_Info* info);
189 static Eina_Bool OnElmAccessActionUnhighlight(void* data, Evas_Object* evasObject, Elm_Access_Action_Info* info);
191 static Eina_Bool OnElmAccessActionHighlightNext(void* data, Evas_Object* evasObject, Elm_Access_Action_Info* info);
193 static Eina_Bool OnElmAccessActionHighlightPrev(void* data, Evas_Object* evasObject, Elm_Access_Action_Info* info);
195 static Eina_Bool OnElmAccessActionActivate(void* data, Evas_Object* evasObject, Elm_Access_Action_Info* info);
197 static Eina_Bool OnElmAccessActionScroll(void* data, Evas_Object* evasObject, Elm_Access_Action_Info* info);
199 static Eina_Bool OnElmAccessActionUp(void* data, Evas_Object* evasObject, Elm_Access_Action_Info* info);
201 static Eina_Bool OnElmAccessActionDown(void* data, Evas_Object* evasObject, Elm_Access_Action_Info* info);
203 static Eina_Bool OnElmAccessActionBack(void* data, Evas_Object* evasObject, Elm_Access_Action_Info* info);
205 static Eina_Bool OnElmAccessActionRead(void* data, Evas_Object* evasObject, Elm_Access_Action_Info* info);
207 /////////////////////////////////////////////////////////////////////////////////////////////////////
208 // Elm Focus callbacks
209 /////////////////////////////////////////////////////////////////////////////////////////////////////
211 static void OnEvasObjectSmartFocused(void *data, Evas_Object* evasObject, void* event);
213 static void OnEvasObjectSmartUnfocused(void *data, Evas_Object* evasObject, void* event);
216 EvasPluginEventInterface& mEvasPluginEventInterface;
219 Evas_Object* mImageEvasObject;
220 Evas_Object* mElmAccessEvasObject;
221 Evas_Object* mElmFocusEvasObject;
224 } // namespace Internal
226 } // namespace Extension