public List<IPrimitiveConditionData> GenerateRules(List<TouchPoint2> points)
        {
            List<IPrimitiveConditionData> shapes = new List<IPrimitiveConditionData>();
            TouchShape shape = new TouchShape();
            ValidSetOfTouchPoints valids;
            bool singlePoint = false;
            foreach (TouchPoint2 point in points)
            {

                if (!point.isFinger)
                {
                    shapes.Add(null);
                    continue;
                }

                singlePoint = TrigonometricCalculationHelper.isASinglePoint(point);
                if (singlePoint)
                {
                    shapes.Add(null);
                    continue;
                }  // A point can't be a closed loop

                valids = ValidateCircle(point);
                if ((valids != null) && (valids.Count > 0))
                {
                    shape.Values = CIRCLE;
                    shapes.Add(shape);
                    continue;
                }
                valids = ValidateBox(point);
                if ((valids != null) && (valids.Count > 0))
                {
                    shape.Values = BOX;
                    shapes.Add(shape);
                    continue;
                }
                valids = ValidateCheck(point);
                if ((valids != null) && (valids.Count > 0))
                {
                    shape.Values = CHECK;
                    shapes.Add(shape);
                    continue;
                }
                valids = ValidateLine(point);
                if ((valids != null) && (valids.Count > 0))
                {
                    shape.Values = LINE;
                    shapes.Add(shape);
                    continue;
                }

            }

            return shapes;
        }
 public void Init(Objects.IPrimitiveConditionData ruleData)
 {
     _data = ruleData as TouchShape;
 }