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;
27 %define STAGE_EVENTHANDLER_TYPEMAP_HELPER(NameSpace, ClassName)
28 %typemap(cscode) NameSpace::ClassName %{
31 * @brief Event arguments that passed via Touch signal
34 public class TouchEventArgs : EventArgs
36 private TouchData _touchData;
39 * @brief TouchData - contains the information of touch points
42 public TouchData TouchData
57 * @brief Event arguments that passed via Wheel signal
60 public class WheelEventArgs : EventArgs
62 private WheelEvent _wheelEvent;
65 * @brief WheelEvent - store a wheel rolling type MOUSE_WHEEL or CUSTOM_WHEEL
68 public WheelEvent WheelEvent
82 * @brief Event arguments that passed via KeyEvent signal
85 public class KeyEventArgs : EventArgs
87 private KeyEvent _keyEvent;
90 * @brief KeyEvent - is the keyevent sent to Stage.
93 public KeyEvent KeyEvent
107 * @brief Event arguments that passed via EventProcessingFinished signal
110 public class EventProcessingFinishedEventArgs : EventArgs
115 * @brief Event arguments that passed via ContextLost signal
118 public class ContextLostEventArgs : EventArgs
123 * @brief Event arguments that passed via ContextRegained signal
126 public class ContextRegainedEventArgs : EventArgs
131 * @brief Event arguments that passed via SceneCreated signal
134 public class SceneCreatedEventArgs : EventArgs
139 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
140 private delegate void StageTouchCallbackDelegate(IntPtr data);
141 private DaliEventHandler<object,TouchEventArgs> _stageTouchEventHandler;
142 private StageTouchCallbackDelegate _stageTouchCallbackDelegate;
144 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
145 private delegate void WheelCallbackDelegate(IntPtr data);
146 private DaliEventHandler<object,WheelEventArgs> _stageWheelEventHandler;
147 private WheelCallbackDelegate _stageWheelCallbackDelegate;
149 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
150 private delegate void KeyCallbackDelegate(IntPtr data);
151 private DaliEventHandler<object,KeyEventArgs> _stageKeyEventHandler;
152 private KeyCallbackDelegate _stageKeyCallbackDelegate;
154 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
155 private delegate void EventProcessingFinishedEventCallbackDelegate();
156 private DaliEventHandler<object,EventProcessingFinishedEventArgs> _stageEventProcessingFinishedEventHandler;
157 private EventProcessingFinishedEventCallbackDelegate _stageEventProcessingFinishedEventCallbackDelegate;
159 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
160 private delegate void ContextLostEventCallbackDelegate();
161 private DaliEventHandler<object,ContextLostEventArgs> _stageContextLostEventHandler;
162 private ContextLostEventCallbackDelegate _stageContextLostEventCallbackDelegate;
164 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
165 private delegate void ContextRegainedEventCallbackDelegate();
166 private DaliEventHandler<object,ContextRegainedEventArgs> _stageContextRegainedEventHandler;
167 private ContextRegainedEventCallbackDelegate _stageContextRegainedEventCallbackDelegate;
169 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
170 private delegate void SceneCreatedEventCallbackDelegate();
171 private DaliEventHandler<object,SceneCreatedEventArgs> _stageSceneCreatedEventHandler;
172 private SceneCreatedEventCallbackDelegate _stageSceneCreatedEventCallbackDelegate;
175 * @brief Event for Touched signal which can be used to subscribe/unsubscribe the event handler
176 * (in the type of TouchEventHandler-DaliEventHandler<object,TouchEventArgs>) provided by the user.
177 * Touched signal is emitted when the screen is touched and when the touch ends
178 * (i.e. the down & up touch events only).
181 public event DaliEventHandler<object,TouchEventArgs> Touched
187 // Restricted to only one listener
188 if (_stageTouchEventHandler == null)
190 _stageTouchEventHandler += value;
192 _stageTouchCallbackDelegate = new StageTouchCallbackDelegate(OnStageTouch);
193 this.TouchSignal().Connect(_stageTouchCallbackDelegate);
202 if (_stageTouchEventHandler != null)
204 this.TouchSignal().Disconnect(_stageTouchCallbackDelegate);
207 _stageTouchEventHandler -= value;
212 // Callback for Stage Touch signal
213 private void OnStageTouch(IntPtr data)
215 TouchEventArgs e = new TouchEventArgs();
217 // Populate all members of "e" (TouchEventArgs) with real data
218 e.TouchData = TouchData.GetTouchDataFromPtr( data );
220 if (_stageTouchEventHandler != null)
222 //here we send all data to user event handlers
223 _stageTouchEventHandler(this, e);
228 * @brief Event for WheelMoved signal which can be used to subscribe/unsubscribe the event handler
229 * (in the type of WheelEventHandler-DaliEventHandler<object,WheelEventArgs>) provided by the user.
230 * WheelMoved signal is emitted is emitted when wheel event is received.
233 public event DaliEventHandler<object,WheelEventArgs> WheelMoved
239 // Restricted to only one listener
240 if (_stageWheelEventHandler == null)
242 _stageWheelEventHandler += value;
244 _stageWheelCallbackDelegate = new WheelCallbackDelegate(OnStageWheel);
245 this.WheelEventSignal().Connect(_stageWheelCallbackDelegate);
254 if (_stageWheelEventHandler != null)
256 this.WheelEventSignal().Disconnect(_stageWheelCallbackDelegate);
259 _stageWheelEventHandler -= value;
264 // Callback for Stage WheelEventsignal
265 private void OnStageWheel(IntPtr data)
267 WheelEventArgs e = new WheelEventArgs();
269 // Populate all members of "e" (WheelEventArgs) with real data
270 e.WheelEvent = Dali.WheelEvent.GetWheelEventFromPtr( data );
272 if (_stageWheelEventHandler != null)
274 //here we send all data to user event handlers
275 _stageWheelEventHandler(this, e);
280 * @brief Event for KeyPressed signal which can be used to subscribe/unsubscribe the event handler
281 * (in the type of KeyEventHandler-DaliEventHandler<object,KeyEventArgs>) provided by the user.
282 * KeyPressed signal is emitted is emitted when key event is received.
285 public event DaliEventHandler<object,KeyEventArgs> KeyPressed
291 // Restricted to only one listener
292 if (_stageKeyEventHandler == null)
294 _stageKeyEventHandler += value;
296 _stageKeyCallbackDelegate = new KeyCallbackDelegate(OnStageKey);
297 this.KeyEventSignal().Connect(_stageKeyCallbackDelegate);
306 if (_stageKeyEventHandler != null)
308 this.KeyEventSignal().Disconnect(_stageKeyCallbackDelegate);
311 _stageKeyEventHandler -= value;
316 // Callback for Stage KeyEventsignal
317 private void OnStageKey(IntPtr keyEvent)
319 KeyEventArgs e = new KeyEventArgs();
321 // Populate all members of "e" (KeyEventArgs) with real data
322 e.KeyEvent = Dali.KeyEvent.GetKeyEventFromPtr( keyEvent );
324 if (_stageKeyEventHandler != null)
326 //here we send all data to user event handlers
327 _stageKeyEventHandler(this, e);
332 * @brief Event for EventProcessingFinished signal which can be used to subscribe/unsubscribe the event handler
333 * (in the type of EventProcessingFinishedEventHandler-DaliEventHandler<object,EventProcessingFinishedEventArgs>)
334 * provided by the user. EventProcessingFinished signal is emitted just after the event processing is finished.
337 public event DaliEventHandler<object,EventProcessingFinishedEventArgs> EventProcessingFinished
343 // Restricted to only one listener
344 if (_stageEventProcessingFinishedEventHandler == null)
346 _stageEventProcessingFinishedEventHandler += value;
348 _stageEventProcessingFinishedEventCallbackDelegate = new EventProcessingFinishedEventCallbackDelegate(OnEventProcessingFinished);
349 this.EventProcessingFinishedSignal().Connect(_stageEventProcessingFinishedEventCallbackDelegate);
358 if (_stageEventProcessingFinishedEventHandler != null)
360 this.EventProcessingFinishedSignal().Disconnect(_stageEventProcessingFinishedEventCallbackDelegate);
363 _stageEventProcessingFinishedEventHandler -= value;
368 // Callback for Stage EventProcessingFinishedSignal
369 private void OnEventProcessingFinished()
371 EventProcessingFinishedEventArgs e = new EventProcessingFinishedEventArgs();
373 if (_stageEventProcessingFinishedEventHandler != null)
375 //here we send all data to user event handlers
376 _stageEventProcessingFinishedEventHandler(this, e);
381 * @brief Event for ContextLost signal which can be used to subscribe/unsubscribe the event handler
382 * (in the type of ContextLostEventHandler-DaliEventHandler<object,ContextLostEventArgs>) provided by the user.
383 * ContextLost signal is emitted when the GL context is lost (Platform specific behaviour).
386 public event DaliEventHandler<object,ContextLostEventArgs> ContextLost
392 // Restricted to only one listener
393 if (_stageContextLostEventHandler == null)
395 _stageContextLostEventHandler += value;
397 _stageContextLostEventCallbackDelegate = new ContextLostEventCallbackDelegate(OnContextLost);
398 this.ContextLostSignal().Connect(_stageContextLostEventCallbackDelegate);
407 if (_stageContextLostEventHandler != null)
409 this.ContextLostSignal().Disconnect(_stageContextLostEventCallbackDelegate);
412 _stageContextLostEventHandler -= value;
417 // Callback for Stage ContextLostSignal
418 private void OnContextLost()
420 ContextLostEventArgs e = new ContextLostEventArgs();
422 if (_stageContextLostEventHandler != null)
424 //here we send all data to user event handlers
425 _stageContextLostEventHandler(this, e);
430 * @brief Event for ContextRegained signal which can be used to subscribe/unsubscribe the event handler
431 * (in the type of ContextRegainedEventHandler-DaliEventHandler<object,ContextRegainedEventArgs>)
432 * provided by the user. ContextRegained signal is emitted when the GL context is regained (Platform specific
436 public event DaliEventHandler<object,ContextRegainedEventArgs> ContextRegained
442 // Restricted to only one listener
443 if (_stageContextRegainedEventHandler == null)
445 _stageContextRegainedEventHandler += value;
447 _stageContextRegainedEventCallbackDelegate = new ContextRegainedEventCallbackDelegate(OnContextRegained);
448 this.ContextRegainedSignal().Connect(_stageContextRegainedEventCallbackDelegate);
457 if (_stageContextRegainedEventHandler != null)
459 this.ContextRegainedSignal().Disconnect(_stageContextRegainedEventCallbackDelegate);
462 _stageContextRegainedEventHandler -= value;
467 // Callback for Stage ContextRegainedSignal
468 private void OnContextRegained()
470 ContextRegainedEventArgs e = new ContextRegainedEventArgs();
472 if (_stageContextRegainedEventHandler != null)
474 //here we send all data to user event handlers
475 _stageContextRegainedEventHandler(this, e);
480 * @brief Event for SceneCreated signal which can be used to subscribe/unsubscribe the event handler
481 * (in the type of SceneCreatedEventHandler-DaliEventHandler<object,SceneCreatedEventArgs>) provided by the user.
482 * SceneCreated signal is emitted after the initial scene is created.
485 public event DaliEventHandler<object,SceneCreatedEventArgs> SceneCreated
491 // Restricted to only one listener
492 if (_stageSceneCreatedEventHandler == null)
494 _stageSceneCreatedEventHandler += value;
496 _stageSceneCreatedEventCallbackDelegate = new SceneCreatedEventCallbackDelegate(OnSceneCreated);
497 this.SceneCreatedSignal().Connect(_stageSceneCreatedEventCallbackDelegate);
506 if (_stageSceneCreatedEventHandler != null)
508 this.SceneCreatedSignal().Disconnect(_stageSceneCreatedEventCallbackDelegate);
511 _stageSceneCreatedEventHandler -= value;
516 // Callback for Stage SceneCreatedSignal
517 private void OnSceneCreated()
519 SceneCreatedEventArgs e = new SceneCreatedEventArgs();
521 if (_stageSceneCreatedEventHandler != null)
523 //here we send all data to user event handlers
524 _stageSceneCreatedEventHandler(this, e);
528 ///< name "Size", type Dali.CSharp.Size (Stage Size value)
530 public Dali.CSharp.Size Size
534 Vector2 ret1 = GetSize();
535 Dali.CSharp.Size ret= new Dali.CSharp.Size(ret1.width, ret1.height);
540 ///< name "BackgroundColor", type Dali.CSharp.Color (Stage background color value)
542 public Dali.CSharp.Color BackgroundColor
546 SetBackgroundColor(value);
550 Vector4 ret1 = GetBackgroundColor();
551 Dali.CSharp.Color ret = new Dali.CSharp.Color(ret1.r, ret1.g, ret1.b, ret1.a);
561 %define DALI_STAGE_EVENTHANDLER_PARAM( NameSpace, ClassName)
563 STAGE_EVENTHANDLER_TYPEMAP_EVENTARG( NameSpace, ClassName);
564 STAGE_EVENTHANDLER_TYPEMAP_HELPER( NameSpace, ClassName);
568 %define DALI_VECTOR4_TO_COLOR_CONVERSION
569 %typemap(cstype) (Vector4 color) "Dali.CSharp.Color"
571 pre=" Vector4 temp$csinput = new Vector4($csinput.R, $csinput.G, $csinput.B, $csinput.A);",
573 ) (Vector4 color) "$csclassname.getCPtr(temp$csinput)"
577 %define DALI_CONST_VECTOR3_REF_TO_POSITION_CONVERSION
578 %typemap(cstype) (const Vector3& position) "Dali.CSharp.Position"
580 pre=" Vector3 temp$csinput = new Vector3($csinput.X, $csinput.Y, $csinput.Z);",
582 ) (const Vector3& position) "$csclassname.getCPtr(temp$csinput)"
586 %define DALI_CONST_VECTOR3_TO_POSITION_CONVERSION
587 %typemap(cstype) (const Vector3) "Dali.CSharp.Position"
589 pre=" Vector3 temp$csinput = new Vector3($csinput.X, $csinput.Y, $csinput.Z);",
591 ) (const Vector3) "$csclassname.getCPtr(temp$csinput)"
597 DALI_STAGE_EVENTHANDLER_PARAM( Dali, Stage);
598 DALI_VECTOR4_TO_COLOR_CONVERSION;
599 DALI_CONST_VECTOR3_REF_TO_POSITION_CONVERSION;
600 DALI_CONST_VECTOR3_TO_POSITION_CONVERSION;