summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ElmSharp.Test/TC/GestureLayerTest1.cs86
-rw-r--r--ElmSharp/ElmSharp.Net45.csproj2
-rw-r--r--ElmSharp/ElmSharp.csproj2
-rw-r--r--ElmSharp/ElmSharp/GestureLayer.cs610
-rw-r--r--ElmSharp/Interop/Interop.Elementary.GestureLayer.cs130
-rw-r--r--packaging/elm-sharp.spec2
6 files changed, 831 insertions, 1 deletions
diff --git a/ElmSharp.Test/TC/GestureLayerTest1.cs b/ElmSharp.Test/TC/GestureLayerTest1.cs
new file mode 100644
index 0000000..b59cbcc
--- /dev/null
+++ b/ElmSharp.Test/TC/GestureLayerTest1.cs
@@ -0,0 +1,86 @@
+using System;
+using ElmSharp;
+using System.Collections.Generic;
+
+namespace ElmSharp.Test
+{
+ class GestureLayerTest1 : TestCaseBase
+ {
+ public override string TestName => "GestureLayerTest1";
+ public override string TestDescription => "Demonstrate GestureLayer features: Tap, DoubleTap, Rotate, Zoom detection.";
+
+ private GestureLayer _glayer;
+ private Label _log;
+ private List<string> _logEntries;
+ private Background _background;
+ private Rectangle _box1;
+
+ public override void Run(Window window)
+ {
+ _background = new Background(window);
+ var windowSize = window.ScreenSize;
+ _background.Color = Color.White;
+ _background.Resize(windowSize.Width, windowSize.Height);
+ _background.Show();
+
+ _box1 = new Rectangle(window)
+ {
+ Color = Color.Yellow
+ };
+ _box1.Resize(400, 600);
+ _box1.Move(160, 160);
+ _box1.Show();
+
+ _log = new Label(window);
+ _log.Resize(700, 1280 - 780);
+ _log.Move(10, 770);
+ _log.Show();
+ _logEntries = new List<string>();
+ Log("Double tap to register additional gestures. Tripple tap to unregister them.");
+
+ _glayer = new GestureLayer(_box1);
+ _glayer.Attach(_box1);
+
+ _glayer.SetTapCallback(GestureLayer.GestureType.Tap, GestureLayer.GestureState.End, (info) => {
+ Log("Tap {0},{1}", info.X, info.Y);
+ });
+
+ _glayer.SetTapCallback(GestureLayer.GestureType.DoubleTap, GestureLayer.GestureState.End, (info) => {
+ Log("DoubleTap {0},{1} {2}", info.X, info.Y, info.FingersCount);
+ _glayer.SetLineCallback(GestureLayer.GestureState.End, (line) => {
+ Log("Line {0},{1}-{2},{3}, M:{4},{5}", line.X1, line.Y1, line.X2, line.Y2, line.HorizontalMomentum, line.VerticalMomentum);
+ });
+ _glayer.SetFlickCallback(GestureLayer.GestureState.End, (flick) => {
+ Log("Flick {0},{1}-{2},{3}, M:{4},{5}", flick.X1, flick.Y1, flick.X2, flick.Y2, flick.HorizontalMomentum, flick.VerticalMomentum);
+ });
+ _glayer.RotateStep = 3;
+ _glayer.SetRotateCallback(GestureLayer.GestureState.Move, (rotate) => {
+ Log("Rotation {0},{1} a:{2:F3} ba:{3:F3}", rotate.X, rotate.Y, rotate.Angle, rotate.BaseAngle);
+ });
+ _glayer.SetZoomCallback(GestureLayer.GestureState.End, (zoom) => {
+ Log("Zoom {0},{1} r:{2} z:{3:F3}", zoom.X, zoom.Y, zoom.Radius, zoom.Zoom);
+ });
+ Log("Line, Flick, Rotate, and Zoom callbacks enabled.");
+ });
+
+ _glayer.SetTapCallback(GestureLayer.GestureType.TripleTap, GestureLayer.GestureState.End, (info) => {
+ Log("TrippleTap {0},{1} {2}", info.X, info.Y, info.FingersCount);
+ _glayer.SetLineCallback(GestureLayer.GestureState.End, null);
+ _glayer.SetFlickCallback(GestureLayer.GestureState.End, null);
+ _glayer.SetRotateCallback(GestureLayer.GestureState.Move, null);
+ _glayer.SetZoomCallback(GestureLayer.GestureState.End, null);
+ Log("Cleared Line, Flick, Rotate, and Zoom callbacks.");
+ });
+ // Momentum is not used, it seems that it conflicts with Rotate and Zoom
+ }
+
+ private void Log(string format, params object[] args)
+ {
+ var entry = string.Format(format, args);
+ if (_logEntries.Count > 15)
+ _logEntries.RemoveRange(0, _logEntries.Count - 15);
+ _logEntries.Add(entry);
+ _log.Text = string.Join("<br>", _logEntries);
+ }
+ }
+}
diff --git a/ElmSharp/ElmSharp.Net45.csproj b/ElmSharp/ElmSharp.Net45.csproj
index f6d676e..ebea12d 100644
--- a/ElmSharp/ElmSharp.Net45.csproj
+++ b/ElmSharp/ElmSharp.Net45.csproj
@@ -79,6 +79,7 @@
<Compile Include="ElmSharp\GenItemClass.cs" />
<Compile Include="ElmSharp\GenList.cs" />
<Compile Include="ElmSharp\GenListItem.cs" />
+ <Compile Include="ElmSharp\GestureLayer.cs" />
<Compile Include="ElmSharp\Icon.cs" />
<Compile Include="ElmSharp\Image.cs" />
<Compile Include="ElmSharp\Index.cs" />
@@ -123,6 +124,7 @@
<Compile Include="Interop\Interop.Elementary.Entry.cs" />
<Compile Include="Interop\Interop.Elementary.GenGridView.cs" />
<Compile Include="Interop\Interop.Elementary.GenListView.cs" />
+ <Compile Include="Interop\Interop.Elementary.GestureLayer.cs" />
<Compile Include="Interop\Interop.Elementary.Image.cs" />
<Compile Include="Interop\Interop.Elementary.Index.cs" />
<Compile Include="Interop\Interop.Elementary.Label.cs" />
diff --git a/ElmSharp/ElmSharp.csproj b/ElmSharp/ElmSharp.csproj
index f5aabe1..bf21751 100644
--- a/ElmSharp/ElmSharp.csproj
+++ b/ElmSharp/ElmSharp.csproj
@@ -76,6 +76,7 @@
<Compile Include="ElmSharp\GenItemClass.cs" />
<Compile Include="ElmSharp\GenList.cs" />
<Compile Include="ElmSharp\GenListItem.cs" />
+ <Compile Include="ElmSharp\GestureLayer.cs" />
<Compile Include="ElmSharp\Icon.cs" />
<Compile Include="ElmSharp\Image.cs" />
<Compile Include="ElmSharp\Index.cs" />
@@ -121,6 +122,7 @@
<Compile Include="Interop\Interop.Elementary.Entry.cs" />
<Compile Include="Interop\Interop.Elementary.GenGridView.cs" />
<Compile Include="Interop\Interop.Elementary.GenListView.cs" />
+ <Compile Include="Interop\Interop.Elementary.GestureLayer.cs" />
<Compile Include="Interop\Interop.Elementary.Image.cs" />
<Compile Include="Interop\Interop.Elementary.Index.cs" />
<Compile Include="Interop\Interop.Elementary.Label.cs" />
diff --git a/ElmSharp/ElmSharp/GestureLayer.cs b/ElmSharp/ElmSharp/GestureLayer.cs
new file mode 100644
index 0000000..24d3944
--- /dev/null
+++ b/ElmSharp/ElmSharp/GestureLayer.cs
@@ -0,0 +1,610 @@
+using System;
+using System.Runtime.InteropServices;
+using System.Collections.Generic;
+
+namespace ElmSharp
+{
+ public class GestureLayer : EvasObject
+ {
+ private readonly Interop.Elementary.GestureEventCallback _gestureCallback;
+
+ // Important: don't remove items from _handlers list
+ // The list can grow up to (number of GestureType) * (number of GestureState)
+ // but all gestures share the callback and you don't want to desynchronize mapping
+ private readonly List<NativeCallback> _handlers = new List<NativeCallback>();
+
+ public GestureLayer(EvasObject parent) : base(parent)
+ {
+ _gestureCallback = new Interop.Elementary.GestureEventCallback(GestureCallbackHandler);
+ }
+
+ public enum GestureType
+ {
+ Tap = 1,
+ LongTap,
+ DoubleTap,
+ TripleTap,
+ Momentum,
+ Line,
+ Flick,
+ Zoom,
+ Rotate,
+ }
+
+ public enum GestureState
+ {
+ Undefined = -1,
+ Start,
+ Move,
+ End,
+ Abort,
+ }
+
+ #region Properties
+ public bool HoldEvents
+ {
+ get
+ {
+ return Interop.Elementary.elm_gesture_layer_hold_events_get(Handle);
+ }
+ set
+ {
+ Interop.Elementary.elm_gesture_layer_hold_events_set(Handle, value);
+ }
+ }
+
+ public bool Continues
+ {
+ get
+ {
+ return Interop.Elementary.elm_gesture_layer_continues_enable_get(Handle);
+ }
+ set
+ {
+ Interop.Elementary.elm_gesture_layer_continues_enable_set(Handle, value);
+ }
+ }
+
+ public int TapFingerSize
+ {
+ get
+ {
+ return Interop.Elementary.elm_gesture_layer_tap_finger_size_get(Handle);
+ }
+ set
+ {
+ Interop.Elementary.elm_gesture_layer_tap_finger_size_set(Handle, value);
+ }
+ }
+
+ public double LongTapTimeout
+ {
+ get
+ {
+ return Interop.Elementary.elm_gesture_layer_long_tap_start_timeout_get(Handle);
+ }
+ set
+ {
+ Interop.Elementary.elm_gesture_layer_long_tap_start_timeout_set(Handle, value);
+ }
+ }
+
+ public double DoubleTapTimeout
+ {
+ get
+ {
+ return Interop.Elementary.elm_gesture_layer_double_tap_timeout_get(Handle);
+ }
+ set
+ {
+ Interop.Elementary.elm_gesture_layer_double_tap_timeout_set(Handle, value);
+ }
+ }
+
+ public int FlickTimeLimit
+ {
+ get
+ {
+ return (int)Interop.Elementary.elm_gesture_layer_flick_time_limit_ms_get(Handle);
+ }
+ set
+ {
+ Interop.Elementary.elm_gesture_layer_flick_time_limit_ms_set(Handle, (UInt32)value);
+ }
+ }
+
+ public int MinimumLineLength
+ {
+ get
+ {
+ return Interop.Elementary.elm_gesture_layer_line_min_length_get(Handle);
+ }
+ set
+ {
+ Interop.Elementary.elm_gesture_layer_line_min_length_set(Handle, value);
+ }
+ }
+
+ public double LineAngularTolerance
+ {
+ get
+ {
+ return Interop.Elementary.elm_gesture_layer_line_angular_tolerance_get(Handle);
+ }
+ set
+ {
+ Interop.Elementary.elm_gesture_layer_line_angular_tolerance_set(Handle, value);
+ }
+ }
+
+ public int LineDistanceTolerance
+ {
+ get
+ {
+ return Interop.Elementary.elm_gesture_layer_line_distance_tolerance_get(Handle);
+ }
+ set
+ {
+ Interop.Elementary.elm_gesture_layer_line_distance_tolerance_set(Handle, value);
+ }
+ }
+
+ public double RotateStep
+ {
+ get
+ {
+ return Interop.Elementary.elm_gesture_layer_rotate_step_get(Handle);
+ }
+ set
+ {
+ Interop.Elementary.elm_gesture_layer_rotate_step_set(Handle, value);
+ }
+ }
+
+ public double RotateAngularTolerance
+ {
+ get
+ {
+ return Interop.Elementary.elm_gesture_layer_rotate_angular_tolerance_get(Handle);
+ }
+ set
+ {
+ Interop.Elementary.elm_gesture_layer_rotate_angular_tolerance_set(Handle, value);
+ }
+ }
+
+ public double ZoomStep
+ {
+ get
+ {
+ return Interop.Elementary.elm_gesture_layer_zoom_step_get(Handle);
+ }
+ set
+ {
+ Interop.Elementary.elm_gesture_layer_zoom_step_set(Handle, value);
+ }
+ }
+
+ public int ZoomDistanceTolerance
+ {
+ get
+ {
+ return Interop.Elementary.elm_gesture_layer_zoom_distance_tolerance_get(Handle);
+ }
+ set
+ {
+ Interop.Elementary.elm_gesture_layer_zoom_distance_tolerance_set(Handle, value);
+ }
+ }
+
+ public double ZoomFingerFactor
+ {
+ get
+ {
+ return Interop.Elementary.elm_gesture_layer_zoom_finger_factor_get(Handle);
+ }
+ set
+ {
+ Interop.Elementary.elm_gesture_layer_zoom_finger_factor_set(Handle, value);
+ }
+ }
+
+ public double ZoomWheelFactor
+ {
+ get
+ {
+ return Interop.Elementary.elm_gesture_layer_zoom_wheel_factor_get(Handle);
+ }
+ set
+ {
+ Interop.Elementary.elm_gesture_layer_zoom_wheel_factor_set(Handle, value);
+ }
+ }
+ #endregion Properties
+
+ public void Attach(EvasObject target)
+ {
+ Interop.Elementary.elm_gesture_layer_attach(Handle, target.Handle);
+ }
+
+ public void SetGestureCallback(GestureType type, GestureState state, Action<object> action)
+ {
+ lock (_handlers)
+ {
+ bool found = false;
+ int i = 0;
+ // if this (type, state) already exists in _handlers, we will reuse it
+ foreach (var handler in _handlers)
+ {
+ if (handler.Type == type && handler.State == state)
+ {
+ found = true;
+ break;
+ }
+ i++;
+ }
+ if (found)
+ {
+ // if we are changing null -> not-null, or not-null -> null, then inform the EFL
+ if (_handlers[i].Action == null ^ action == null)
+ Interop.Elementary.elm_gesture_layer_cb_set(Handle, type, state, action == null ? null : _gestureCallback, new IntPtr(i));
+ // overwrite previous action
+ _handlers[i].Action = action;
+ }
+ else
+ {
+ if (action == null)
+ {
+ // ignore unsetting a handler for event which was not registered yet?
+ return;
+ }
+ // (type, state) was not found, so we are adding a new entry and registering the callback
+ _handlers.Add(new NativeCallback(type, state, action));
+ // callback is always the same, the event is recognised by the index in _handler list (the index is passed as data)
+ Interop.Elementary.elm_gesture_layer_cb_set(Handle, type, state, _gestureCallback, new IntPtr(i));
+ }
+ }
+ }
+
+ public void ClearCallbacks()
+ {
+ lock (_handlers)
+ {
+ int i = 0;
+ foreach (var handler in _handlers)
+ {
+ if (handler.Action != null)
+ {
+ Interop.Elementary.elm_gesture_layer_cb_set(Handle, handler.Type, handler.State, null, new IntPtr(i));
+ handler.Action = null;
+ }
+ i++;
+ }
+ }
+ }
+
+ #region Typed callback setting methods
+ // Following methods have been added for convenience, so the user will not have to convert Info structures himself
+ public void SetTapCallback(GestureType type, GestureState state, Action<TapData> action)
+ {
+ SetCallback(type, state, action);
+ }
+
+ public void SetMomentumCallback(GestureState state, Action<MomentumData> action)
+ {
+ SetCallback(GestureType.Momentum, state, action);
+ }
+
+ public void SetLineCallback(GestureState state, Action<LineData> action)
+ {
+ SetCallback(GestureType.Line, state, action);
+ }
+
+ public void SetFlickCallback(GestureState state, Action<LineData> action)
+ {
+ SetCallback(GestureType.Flick, state, action);
+ }
+
+ public void SetZoomCallback(GestureState state, Action<ZoomData> action)
+ {
+ SetCallback(GestureType.Zoom, state, action);
+ }
+
+ public void SetRotateCallback(GestureState state, Action<RotateData> action)
+ {
+ SetCallback(GestureType.Rotate, state, action);
+ }
+ #endregion Typed callback setting methods
+
+ protected override IntPtr CreateHandle(EvasObject parent)
+ {
+ return Interop.Elementary.elm_gesture_layer_add(parent);
+ }
+
+ protected override void OnUnrealize()
+ {
+ ClearCallbacks();
+ base.OnUnrealize();
+ }
+
+ private void SetCallback<T>(GestureType type, GestureState state, Action<T> action)
+ {
+ if (action == null)
+ SetGestureCallback(type, state, null);
+ else
+ SetGestureCallback(type, state, new Action<object>((info) => action((T)info)));
+ }
+
+ private void GestureCallbackHandler(IntPtr data, IntPtr event_info)
+ {
+ // so EFL called our callback, lets use data to find the right Action to call
+ var handlerIndex = (int)data;
+ // thanks to the fact that we never remove item from _handlers, we don't need a lock here
+ if (handlerIndex < 0 || handlerIndex >= _handlers.Count)
+ return;
+ Action<object> action = _handlers[handlerIndex].Action;
+ if (action == null)
+ return;
+ // the interpretation of the event_info struct pointer depends on the GestureType
+ switch (_handlers[handlerIndex].Type)
+ {
+ case GestureType.Tap:
+ case GestureType.LongTap:
+ case GestureType.DoubleTap:
+ case GestureType.TripleTap:
+ action(Marshal.PtrToStructure<TapData>(event_info));
+ break;
+ case GestureType.Momentum:
+ action(Marshal.PtrToStructure<MomentumData>(event_info));
+ break;
+ case GestureType.Line:
+ case GestureType.Flick:
+ action(Marshal.PtrToStructure<LineData>(event_info));
+ break;
+ case GestureType.Zoom:
+ action(Marshal.PtrToStructure<ZoomData>(event_info));
+ break;
+ case GestureType.Rotate:
+ action(Marshal.PtrToStructure<RotateData>(event_info));
+ break;
+ }
+ }
+
+ #region Info structures
+
+ [StructLayout(LayoutKind.Sequential)]
+ public struct TapData
+ {
+ /// <summary>
+ /// The x coordinate of the center point.
+ /// </summary>
+ public Int32 X;
+
+ /// <summary>
+ /// The y coordinate of the center point.
+ /// </summary>
+ public Int32 Y;
+
+ #pragma warning disable 3003
+ /// <summary>
+ /// The number of fingers tapped.
+ /// </summary>
+ public UInt32 FingersCount;
+
+ /// <summary>
+ /// The timestamp.
+ /// </summary>
+ public UInt32 Timestamp;
+ #pragma warning restore 3003
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ public struct MomentumData
+ {
+ /// <summary>
+ /// Final-swipe direction starting point on X.
+ /// </summary>
+ public Int32 X1;
+
+ /// <summary>
+ /// Final-swipe direction starting point on Y.
+ /// </summary>
+ public Int32 Y1;
+
+ /// <summary>
+ /// Final-swipe direction ending point on X.
+ /// </summary>
+ public Int32 X2;
+
+ /// <summary>
+ /// Final-swipe direction ending point on Y
+ /// </summary>
+ public Int32 Y2;
+
+ #pragma warning disable 3003
+ /// <summary>
+ /// Timestamp of start of final x-swipe.
+ /// </summary>
+ public UInt32 HorizontalSwipeTimestamp;
+
+ /// <summary>
+ /// Timestamp of start of final y-swipe.
+ /// </summary>
+ public UInt32 VerticalSwipeTimestamp;
+
+ /// <summary>
+ /// Momentum on X.
+ /// </summary>
+ public Int32 HorizontalMomentum;
+
+ /// <summary>
+ /// Momentum on Y.
+ /// </summary>
+ public Int32 VerticalMomentum;
+
+ /// <summary>
+ /// Number of fingers.
+ /// </summary>
+ public UInt32 FingersCount;
+ #pragma warning restore 3003
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ public struct LineData
+ {
+ /// <summary>
+ /// Final-swipe direction starting point on X.
+ /// </summary>
+ public Int32 X1;
+
+ /// <summary>
+ /// Final-swipe direction starting point on Y.
+ /// </summary>
+ public Int32 Y1;
+
+ /// <summary>
+ /// Final-swipe direction ending point on X.
+ /// </summary>
+ public Int32 X2;
+
+ /// <summary>
+ /// Final-swipe direction ending point on Y
+ /// </summary>
+ public Int32 Y2;
+
+ #pragma warning disable 3003
+ /// <summary>
+ /// Timestamp of start of final x-swipe.
+ /// </summary>
+ public UInt32 HorizontalSwipeTimestamp;
+
+ /// <summary>
+ /// Timestamp of start of final y-swipe.
+ /// </summary>
+ public UInt32 VerticalSwipeTimestamp;
+
+ /// <summary>
+ /// Momentum on X.
+ /// </summary>
+ public Int32 HorizontalMomentum;
+
+ /// <summary>
+ /// Momentum on Y.
+ /// </summary>
+ public Int32 VerticalMomentum;
+
+ /// <summary>
+ /// Number of fingers.
+ /// </summary>
+ public UInt32 FingersCount;
+ #pragma warning restore 3003
+
+ /// <summary>
+ /// Angle (direction) of lines.
+ /// </summary>
+ public double Angle;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ public struct ZoomData
+ {
+ /// <summary>
+ /// The x coordinate of zoom center point reported to user.
+ /// </summary>
+ public Int32 X;
+
+ /// <summary>
+ /// The y coordinate of zoom center point reported to user.
+ /// </summary>
+ public Int32 Y;
+
+ /// <summary>
+ /// The radius (distance) between fingers reported to user.
+ /// </summary>
+ public Int32 Radius;
+
+ /// <summary>
+ /// The zoom value. 1.0 means no zoom.
+ /// </summary>
+ public double Zoom;
+
+ /// <summary>
+ /// Zoom momentum: zoom growth per second (NOT YET SUPPORTED).
+ /// </summary>
+ private double Momentum;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ public struct RotateData
+ {
+ /// <summary>
+ /// The x coordinate of rotation center point reported to user.
+ /// </summary>
+ public Int32 X;
+
+ /// <summary>
+ /// The y coordinate of rotation center point reported to user.
+ /// </summary>
+ public Int32 Y;
+
+ /// <summary>
+ /// The radius (distance) between fingers reported to user.
+ /// </summary>
+ public Int32 Radius;
+
+ /// <summary>
+ /// The start-angle.
+ /// </summary>
+ public double BaseAngle;
+
+ /// <summary>
+ /// The rotation value. 0.0 means no rotation.
+ /// </summary>
+ public double Angle;
+
+ /// <summary>
+ /// Rotation momentum: rotation done per second (NOT YET SUPPORTED).
+ /// </summary>
+ private double Momentum;
+ }
+
+ #endregion Info structures
+
+ public static class Config
+ {
+ public static double DefaultLongTapTimeout
+ {
+ get {
+ return Interop.Elementary.elm_config_glayer_long_tap_start_timeout_get();
+ }
+ set {
+ Interop.Elementary.elm_config_glayer_long_tap_start_timeout_set(value);
+ }
+ }
+
+ public static double DefaultDoubleTapTimeout
+ {
+ get {
+ return Interop.Elementary.elm_config_glayer_double_tap_timeout_get();
+ }
+ set {
+ Interop.Elementary.elm_config_glayer_double_tap_timeout_set(value);
+ }
+ }
+ }
+
+ private class NativeCallback
+ {
+ public readonly GestureType Type;
+ public readonly GestureState State;
+ public Action<object> Action;
+
+ public NativeCallback(GestureType type, GestureState state, Action<object> action)
+ {
+ Type = type;
+ State = state;
+ Action = action;
+ }
+ }
+ }
+}
diff --git a/ElmSharp/Interop/Interop.Elementary.GestureLayer.cs b/ElmSharp/Interop/Interop.Elementary.GestureLayer.cs
new file mode 100644
index 0000000..726c0bc
--- /dev/null
+++ b/ElmSharp/Interop/Interop.Elementary.GestureLayer.cs
@@ -0,0 +1,130 @@
+// Copyright 2016 by Samsung Electronics, Inc.,
+//
+// This software is the confidential and proprietary information
+// of Samsung Electronics, Inc. ("Confidential Information"). You
+// shall not disclose such Confidential Information and shall use
+// it only in accordance with the terms of the license agreement
+// you entered into with Samsung.
+
+using System;
+using System.Runtime.InteropServices;
+
+internal static partial class Interop
+{
+ internal static partial class Elementary
+ {
+ public delegate void GestureEventCallback(IntPtr data, IntPtr event_info);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern IntPtr elm_gesture_layer_add(IntPtr parent);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern bool elm_gesture_layer_attach(IntPtr obj, IntPtr target);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_gesture_layer_zoom_step_set(IntPtr obj, double step);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern double elm_gesture_layer_zoom_step_get(IntPtr obj);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_gesture_layer_tap_finger_size_set(IntPtr obj, int sz);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern int elm_gesture_layer_tap_finger_size_get(IntPtr obj);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_gesture_layer_hold_events_set(IntPtr obj, bool hold_events);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern bool elm_gesture_layer_hold_events_get(IntPtr obj);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_gesture_layer_rotate_step_set(IntPtr obj, double step);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern double elm_gesture_layer_rotate_step_get(IntPtr obj);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_gesture_layer_cb_set(IntPtr obj, ElmSharp.GestureLayer.GestureType idx, ElmSharp.GestureLayer.GestureState cb_type, GestureEventCallback cb, IntPtr data);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_gesture_layer_line_min_length_set(IntPtr obj, int line_min_length);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern int elm_gesture_layer_line_min_length_get(IntPtr obj);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_gesture_layer_zoom_distance_tolerance_set(IntPtr obj, int zoom_distance_tolerance);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern int elm_gesture_layer_zoom_distance_tolerance_get(IntPtr obj);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_gesture_layer_line_distance_tolerance_set(IntPtr obj, int line_distance_tolerance);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern int elm_gesture_layer_line_distance_tolerance_get (IntPtr obj);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_gesture_layer_line_angular_tolerance_set(IntPtr obj, double line_angular_tolerance);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern double elm_gesture_layer_line_angular_tolerance_get(IntPtr obj);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_gesture_layer_zoom_wheel_factor_set(IntPtr obj, double zoom_wheel_factor);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern double elm_gesture_layer_zoom_wheel_factor_get (IntPtr obj);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_gesture_layer_zoom_finger_factor_set (IntPtr obj, double zoom_finger_factor);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern double elm_gesture_layer_zoom_finger_factor_get (IntPtr obj);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_gesture_layer_rotate_angular_tolerance_set (IntPtr obj, double rotate_angular_tolerance);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern double elm_gesture_layer_rotate_angular_tolerance_get (IntPtr obj);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_gesture_layer_flick_time_limit_ms_set (IntPtr obj, UInt32 flick_time_limit_ms);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern UInt32 elm_gesture_layer_flick_time_limit_ms_get (IntPtr obj);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_gesture_layer_long_tap_start_timeout_set(IntPtr obj, double long_tap_start_timeout);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern double elm_gesture_layer_long_tap_start_timeout_get (IntPtr obj);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_gesture_layer_continues_enable_set(IntPtr obj, bool continues_enable);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern bool elm_gesture_layer_continues_enable_get (IntPtr obj);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_gesture_layer_double_tap_timeout_set (IntPtr obj, double double_tap_timeout);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern double elm_gesture_layer_double_tap_timeout_get (IntPtr obj);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern double elm_config_glayer_long_tap_start_timeout_get ();
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_config_glayer_long_tap_start_timeout_set(double long_tap_timeout);
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern double elm_config_glayer_double_tap_timeout_get();
+
+ [DllImport(Libraries.Elementary)]
+ internal static extern void elm_config_glayer_double_tap_timeout_set(double double_tap_timeout);
+ }
+}
+
diff --git a/packaging/elm-sharp.spec b/packaging/elm-sharp.spec
index f4081d5..142470c 100644
--- a/packaging/elm-sharp.spec
+++ b/packaging/elm-sharp.spec
@@ -8,7 +8,7 @@
Name: elm-sharp
Summary: C# Binding for Elementary
-Version: 1.0.5
+Version: 1.0.6
Release: 1
Group: Development/Libraries
License: Apache-2.0