public List<IPrimitiveConditionData> GenerateRules(List<TouchPoint2> points) { // Paths generally contain a lot of points, we are skipping some points // to improve performance. The 'step' variable decides how much we should skip List<IPrimitiveConditionData> primitives = new List<IPrimitiveConditionData>(); bool singlePoint = false; foreach (TouchPoint2 point in points) { if (!point.isFinger) { primitives.Add(null); continue; } singlePoint = TrigonometricCalculationHelper.isASinglePoint(point); if (singlePoint) { primitives.Add(null); continue; } StylusPoint p1 = point.Stroke.StylusPoints[0]; StylusPoint p2 = point.Stroke.StylusPoints[point.Stroke.StylusPoints.Count - 1]; double slope = TrigonometricCalculationHelper.GetSlopeBetweenPoints(p1, p2); string sDirection = TouchPointExtensions.SlopeToDirection(slope); TouchDirection direction = new TouchDirection(); direction.Values = sDirection; primitives.Add(direction); } return primitives; }
public void Init(IPrimitiveConditionData ruleData) { _data = ruleData as TouchDirection; }