2 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 %define STAGE_EVENTHANDLER_TYPEMAP_EVENTARG(NameSpace, ClassName)
19 %typemap(csimports) NameSpace::ClassName %{
21 using System.Runtime.InteropServices;
26 %define STAGE_EVENTHANDLER_TYPEMAP_HELPER(NameSpace, ClassName)
27 %typemap(cscode) NameSpace::ClassName %{
30 * @brief Event arguments that passed via Touch signal
33 public class TouchEventArgs : EventArgs
35 private TouchData _touchData;
38 * @brief TouchData - contains the information of touch points
41 public TouchData TouchData
56 * @brief Event arguments that passed via Wheel signal
59 public class WheelEventArgs : EventArgs
61 private WheelEvent _wheelEvent;
64 * @brief WheelEvent - store a wheel rolling type MOUSE_WHEEL or CUSTOM_WHEEL
67 public WheelEvent WheelEvent
81 * @brief Event arguments that passed via KeyEvent signal
84 public class KeyEventArgs : EventArgs
86 private KeyEvent _keyEvent;
89 * @brief KeyEvent - is the keyevent sent to Stage.
92 public KeyEvent KeyEvent
106 * @brief Event arguments that passed via EventProcessingFinished signal
109 public class EventProcessingFinishedEventArgs : EventArgs
114 * @brief Event arguments that passed via ContextLost signal
117 public class ContextLostEventArgs : EventArgs
122 * @brief Event arguments that passed via ContextRegained signal
125 public class ContextRegainedEventArgs : EventArgs
130 * @brief Event arguments that passed via SceneCreated signal
133 public class SceneCreatedEventArgs : EventArgs
138 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
139 private delegate void StageTouchCallbackDelegate(IntPtr data);
140 private DaliEventHandler<object,TouchEventArgs> _stageTouchEventHandler;
141 private StageTouchCallbackDelegate _stageTouchCallbackDelegate;
143 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
144 private delegate void WheelCallbackDelegate(IntPtr data);
145 private DaliEventHandler<object,WheelEventArgs> _stageWheelEventHandler;
146 private WheelCallbackDelegate _stageWheelCallbackDelegate;
148 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
149 private delegate void KeyCallbackDelegate(IntPtr data);
150 private DaliEventHandler<object,KeyEventArgs> _stageKeyEventHandler;
151 private KeyCallbackDelegate _stageKeyCallbackDelegate;
153 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
154 private delegate void EventProcessingFinishedEventCallbackDelegate();
155 private DaliEventHandler<object,EventProcessingFinishedEventArgs> _stageEventProcessingFinishedEventHandler;
156 private EventProcessingFinishedEventCallbackDelegate _stageEventProcessingFinishedEventCallbackDelegate;
158 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
159 private delegate void ContextLostEventCallbackDelegate();
160 private DaliEventHandler<object,ContextLostEventArgs> _stageContextLostEventHandler;
161 private ContextLostEventCallbackDelegate _stageContextLostEventCallbackDelegate;
163 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
164 private delegate void ContextRegainedEventCallbackDelegate();
165 private DaliEventHandler<object,ContextRegainedEventArgs> _stageContextRegainedEventHandler;
166 private ContextRegainedEventCallbackDelegate _stageContextRegainedEventCallbackDelegate;
168 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
169 private delegate void SceneCreatedEventCallbackDelegate();
170 private DaliEventHandler<object,SceneCreatedEventArgs> _stageSceneCreatedEventHandler;
171 private SceneCreatedEventCallbackDelegate _stageSceneCreatedEventCallbackDelegate;
174 * @brief Event for Touched signal which can be used to subscribe/unsubscribe the event handler
175 * (in the type of TouchEventHandler-DaliEventHandler<object,TouchEventArgs>) provided by the user.
176 * Touched signal is emitted when the screen is touched and when the touch ends
177 * (i.e. the down & up touch events only).
180 public event DaliEventHandler<object,TouchEventArgs> Touched
186 // Restricted to only one listener
187 if (_stageTouchEventHandler == null)
189 _stageTouchEventHandler += value;
191 _stageTouchCallbackDelegate = new StageTouchCallbackDelegate(OnStageTouch);
192 this.TouchSignal().Connect(_stageTouchCallbackDelegate);
201 if (_stageTouchEventHandler != null)
203 this.TouchSignal().Disconnect(_stageTouchCallbackDelegate);
206 _stageTouchEventHandler -= value;
211 // Callback for Stage Touch signal
212 private void OnStageTouch(IntPtr data)
214 TouchEventArgs e = new TouchEventArgs();
216 // Populate all members of "e" (TouchEventArgs) with real data
217 e.TouchData = TouchData.GetTouchDataFromPtr( data );
219 if (_stageTouchEventHandler != null)
221 //here we send all data to user event handlers
222 _stageTouchEventHandler(this, e);
227 * @brief Event for WheelMoved signal which can be used to subscribe/unsubscribe the event handler
228 * (in the type of WheelEventHandler-DaliEventHandler<object,WheelEventArgs>) provided by the user.
229 * WheelMoved signal is emitted is emitted when wheel event is received.
232 public event DaliEventHandler<object,WheelEventArgs> WheelMoved
238 // Restricted to only one listener
239 if (_stageWheelEventHandler == null)
241 _stageWheelEventHandler += value;
243 _stageWheelCallbackDelegate = new WheelCallbackDelegate(OnStageWheel);
244 this.WheelEventSignal().Connect(_stageWheelCallbackDelegate);
253 if (_stageWheelEventHandler != null)
255 this.WheelEventSignal().Disconnect(_stageWheelCallbackDelegate);
258 _stageWheelEventHandler -= value;
263 // Callback for Stage WheelEventsignal
264 private void OnStageWheel(IntPtr data)
266 WheelEventArgs e = new WheelEventArgs();
268 // Populate all members of "e" (WheelEventArgs) with real data
269 e.WheelEvent = Dali.WheelEvent.GetWheelEventFromPtr( data );
271 if (_stageWheelEventHandler != null)
273 //here we send all data to user event handlers
274 _stageWheelEventHandler(this, e);
279 * @brief Event for KeyPressed signal which can be used to subscribe/unsubscribe the event handler
280 * (in the type of KeyEventHandler-DaliEventHandler<object,KeyEventArgs>) provided by the user.
281 * KeyPressed signal is emitted is emitted when key event is received.
284 public event DaliEventHandler<object,KeyEventArgs> KeyPressed
290 // Restricted to only one listener
291 if (_stageKeyEventHandler == null)
293 _stageKeyEventHandler += value;
295 _stageKeyCallbackDelegate = new KeyCallbackDelegate(OnStageKey);
296 this.KeyEventSignal().Connect(_stageKeyCallbackDelegate);
305 if (_stageKeyEventHandler != null)
307 this.KeyEventSignal().Disconnect(_stageKeyCallbackDelegate);
310 _stageKeyEventHandler -= value;
315 // Callback for Stage KeyEventsignal
316 private void OnStageKey(IntPtr keyEvent)
318 KeyEventArgs e = new KeyEventArgs();
320 // Populate all members of "e" (KeyEventArgs) with real data
321 e.KeyEvent = Dali.KeyEvent.GetKeyEventFromPtr( keyEvent );
323 if (_stageKeyEventHandler != null)
325 //here we send all data to user event handlers
326 _stageKeyEventHandler(this, e);
331 * @brief Event for EventProcessingFinished signal which can be used to subscribe/unsubscribe the event handler
332 * (in the type of EventProcessingFinishedEventHandler-DaliEventHandler<object,EventProcessingFinishedEventArgs>)
333 * provided by the user. EventProcessingFinished signal is emitted just after the event processing is finished.
336 public event DaliEventHandler<object,EventProcessingFinishedEventArgs> EventProcessingFinished
342 // Restricted to only one listener
343 if (_stageEventProcessingFinishedEventHandler == null)
345 _stageEventProcessingFinishedEventHandler += value;
347 _stageEventProcessingFinishedEventCallbackDelegate = new EventProcessingFinishedEventCallbackDelegate(OnEventProcessingFinished);
348 this.EventProcessingFinishedSignal().Connect(_stageEventProcessingFinishedEventCallbackDelegate);
357 if (_stageEventProcessingFinishedEventHandler != null)
359 this.EventProcessingFinishedSignal().Disconnect(_stageEventProcessingFinishedEventCallbackDelegate);
362 _stageEventProcessingFinishedEventHandler -= value;
367 // Callback for Stage EventProcessingFinishedSignal
368 private void OnEventProcessingFinished()
370 EventProcessingFinishedEventArgs e = new EventProcessingFinishedEventArgs();
372 if (_stageEventProcessingFinishedEventHandler != null)
374 //here we send all data to user event handlers
375 _stageEventProcessingFinishedEventHandler(this, e);
380 * @brief Event for ContextLost signal which can be used to subscribe/unsubscribe the event handler
381 * (in the type of ContextLostEventHandler-DaliEventHandler<object,ContextLostEventArgs>) provided by the user.
382 * ContextLost signal is emitted when the GL context is lost (Platform specific behaviour).
385 public event DaliEventHandler<object,ContextLostEventArgs> ContextLost
391 // Restricted to only one listener
392 if (_stageContextLostEventHandler == null)
394 _stageContextLostEventHandler += value;
396 _stageContextLostEventCallbackDelegate = new ContextLostEventCallbackDelegate(OnContextLost);
397 this.ContextLostSignal().Connect(_stageContextLostEventCallbackDelegate);
406 if (_stageContextLostEventHandler != null)
408 this.ContextLostSignal().Disconnect(_stageContextLostEventCallbackDelegate);
411 _stageContextLostEventHandler -= value;
416 // Callback for Stage ContextLostSignal
417 private void OnContextLost()
419 ContextLostEventArgs e = new ContextLostEventArgs();
421 if (_stageContextLostEventHandler != null)
423 //here we send all data to user event handlers
424 _stageContextLostEventHandler(this, e);
429 * @brief Event for ContextRegained signal which can be used to subscribe/unsubscribe the event handler
430 * (in the type of ContextRegainedEventHandler-DaliEventHandler<object,ContextRegainedEventArgs>)
431 * provided by the user. ContextRegained signal is emitted when the GL context is regained (Platform specific
435 public event DaliEventHandler<object,ContextRegainedEventArgs> ContextRegained
441 // Restricted to only one listener
442 if (_stageContextRegainedEventHandler == null)
444 _stageContextRegainedEventHandler += value;
446 _stageContextRegainedEventCallbackDelegate = new ContextRegainedEventCallbackDelegate(OnContextRegained);
447 this.ContextRegainedSignal().Connect(_stageContextRegainedEventCallbackDelegate);
456 if (_stageContextRegainedEventHandler != null)
458 this.ContextRegainedSignal().Disconnect(_stageContextRegainedEventCallbackDelegate);
461 _stageContextRegainedEventHandler -= value;
466 // Callback for Stage ContextRegainedSignal
467 private void OnContextRegained()
469 ContextRegainedEventArgs e = new ContextRegainedEventArgs();
471 if (_stageContextRegainedEventHandler != null)
473 //here we send all data to user event handlers
474 _stageContextRegainedEventHandler(this, e);
479 * @brief Event for SceneCreated signal which can be used to subscribe/unsubscribe the event handler
480 * (in the type of SceneCreatedEventHandler-DaliEventHandler<object,SceneCreatedEventArgs>) provided by the user.
481 * SceneCreated signal is emitted after the initial scene is created.
484 public event DaliEventHandler<object,SceneCreatedEventArgs> SceneCreated
490 // Restricted to only one listener
491 if (_stageSceneCreatedEventHandler == null)
493 _stageSceneCreatedEventHandler += value;
495 _stageSceneCreatedEventCallbackDelegate = new SceneCreatedEventCallbackDelegate(OnSceneCreated);
496 this.SceneCreatedSignal().Connect(_stageSceneCreatedEventCallbackDelegate);
505 if (_stageSceneCreatedEventHandler != null)
507 this.SceneCreatedSignal().Disconnect(_stageSceneCreatedEventCallbackDelegate);
510 _stageSceneCreatedEventHandler -= value;
515 // Callback for Stage SceneCreatedSignal
516 private void OnSceneCreated()
518 SceneCreatedEventArgs e = new SceneCreatedEventArgs();
520 if (_stageSceneCreatedEventHandler != null)
522 //here we send all data to user event handlers
523 _stageSceneCreatedEventHandler(this, e);
531 Vector2 ret = GetSize();
536 public Vector4 BackgroundColor
540 SetBackgroundColor(value);
544 Vector4 ret = GetBackgroundColor();
554 %define DALI_STAGE_EVENTHANDLER_PARAM( NameSpace, ClassName)
556 STAGE_EVENTHANDLER_TYPEMAP_EVENTARG( NameSpace, ClassName);
557 STAGE_EVENTHANDLER_TYPEMAP_HELPER( NameSpace, ClassName);
563 DALI_STAGE_EVENTHANDLER_PARAM( Dali, Stage);