internal override void ProcessEvent(InteractionOutput output) { if (output.Data.Interaction == Win32TouchFunctions.INTERACTION.TAP) { var p = touchForm.PointToClient(new System.Drawing.Point((int)output.Data.X, (int)output.Data.Y)); if (output.Data.Tap.Count == 1) { touchForm.NotifyTap(new Vector2(p.X, p.Y)); } else if (output.Data.Tap.Count == 2) { touchForm.NotifyDoubleTap(new Vector2(p.X, p.Y)); } } else if (output.Data.Interaction == Win32TouchFunctions.INTERACTION.SECONDARY_TAP) { var p = touchForm.PointToClient(new System.Drawing.Point((int)output.Data.X, (int)output.Data.Y)); touchForm.NotifyTouchSecondaryTap(new Vector2(p.X, p.Y)); } else if (output.Data.Interaction == Win32TouchFunctions.INTERACTION.HOLD) { } else if (output.Data.Interaction == Win32TouchFunctions.INTERACTION.MANIPULATION) { if (output.IsBegin()) { var p = touchForm.PointToClient(new System.Drawing.Point((int)output.Data.X, (int)output.Data.Y)); center = new Vector2(p.X, p.Y); prevTranslation = new Vector2(); return; } var mt = output.Data.Manipulation.Cumulative; var translation = new Vector2(mt.TranslationX, mt.TranslationY); var delta = translation - prevTranslation; prevTranslation = translation; touchForm.NotifyTouchManipulation(center, delta, mt.Scale); //output.IsEnd() } }