src/GestureControl/GestureControl.cs
changeset 174 45c9e55fcf23
parent 173 e99fe78cd168
child 175 1d4b6d6474d5
--- a/src/GestureControl/GestureControl.cs	Mon Oct 26 08:36:15 2009 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Diagnostics;
-using System.Text;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Media.Animation;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
-using Microsoft.Surface;
-using Microsoft.Surface.Presentation;
-using Microsoft.Surface.Presentation.Controls;
-using System.Windows.Ink;
-
-namespace GestureControl
-{
-    public class GestureControl : ContentControl
-    {
-        private double angle = 0;
-        public static readonly DependencyProperty GestureProperty;
-        public String Gesture
-        {
-            get { return (String)GetValue(GestureControl.GestureProperty); }
-            set { SetValue(GestureControl.GestureProperty, value); }
-        }
-
-        #region GestureEvent
-        public delegate void GestureRoutedEventHandler(object sender, GestureRoutedEventArgs e);
-        public static readonly RoutedEvent gestureEvent = EventManager.RegisterRoutedEvent(
-            "GestureEvent", RoutingStrategy.Bubble, typeof(GestureRoutedEventHandler), typeof(GestureControl));
-
-        public event GestureRoutedEventHandler GestureEvent
-        {
-            add { AddHandler(gestureEvent, value); }
-            remove { RemoveHandler(gestureEvent, value); }
-        }
-        protected virtual void RaiseGestureEvent(String gesture)
-        {
-            try
-            {
-                GestureRoutedEventArgs newEventArgs = new GestureRoutedEventArgs(GestureControl.gestureEvent, gesture);
-                RaiseEvent(newEventArgs);
-            }
-            catch (Exception e) { }
-        }
-        #endregion
-
-        static GestureControl()
-        {
-            DefaultStyleKeyProperty.OverrideMetadata(typeof(GestureControl), new FrameworkPropertyMetadata(typeof(GestureControl)));
-
-            GestureControl.GestureProperty = DependencyProperty.Register("Gesture", typeof(String), typeof(GestureControl),
-                    new FrameworkPropertyMetadata("None", new PropertyChangedCallback(OnGestureChanged)));
-        }
-        private static void OnGestureChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
-        {
-            //Debug.WriteLine("changed", "Gesture");
-        }
-
-        protected override void OnInitialized(EventArgs e)
-        {
-            base.OnInitialized(e);
-            this.InitializeControl();
-        }
-        protected void InitializeControl()
-        {
-           base.AddHandler(SurfaceControl.PreviewContactDownEvent, new RoutedEventHandler(AreaDown));
-           base.AddHandler(SurfaceInkCanvas.StrokeCollectedEvent, new RoutedEventHandler(AreaStrokeCollected));
-        }
-        // get angle from the first contact of the stroke
-        protected void AreaDown(object source, RoutedEventArgs e)
-        {
-            ContactEventArgs c = (ContactEventArgs)e;
-            this.angle = c.Contact.GetOrientation(this) - 270;
-        }
-
-        protected void AreaStrokeCollected(object source, RoutedEventArgs e)
-        {
-            Debug.WriteLine("collected", "Stroke");
-            System.Windows.Controls.InkCanvasStrokeCollectedEventArgs tmp = e as System.Windows.Controls.InkCanvasStrokeCollectedEventArgs;
-            // Apply a rotation with the angle of the first contact
-            Matrix rot = Matrix.Identity;
-            rot.Rotate(-this.angle);
-            Stroke s = tmp.Stroke;
-            s.Transform(rot, true);
-            // Get a list of point from a Bezier curve
-            StylusPointCollection tmp2 = s.GetBezierStylusPoints();
-            // Generate a list of SurfaceGesturePoint, just X and Y but can be improve
-            List<SurfaceGesturePoint> pointList = new List<SurfaceGesturePoint>();
-            foreach (StylusPoint p in tmp2)
-                pointList.Add(new SurfaceGesturePoint { X = p.X, Y = p.Y });
-            // create the gesture analyser and set the list
-            SurfaceGesture gesture = new SurfaceGesture(pointList, 1);
-            // try to get a pattern from the list, if one, raise a event
-            this.Gesture = gesture.GetPattern();
-            if (this.Gesture != "None")
-            {
-                this.RaiseGestureEvent(this.Gesture);
-            }
-            // clear the stroke
-            SurfaceInkCanvas ink = e.OriginalSource as SurfaceInkCanvas;
-            ink.Strokes.Clear();
-        }
-    }
-}