public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            if (values.Length != 3)
            {
                return(null);
            }
            double width  = (double)values[0];
            double height = (double)values[1];

            Template.RightSideFormEnum rightSideForm      = (Template.RightSideFormEnum)values[2];
            ISideCurveGenerator        rightSideGenerator = SideCurveGeneratorFactory.GetGeneratorFor(rightSideForm);

            return(new PointCollection(Drawing.GetRightPolyline(width, height, rightSideGenerator)));
        }
        public static ISideCurveGenerator GetGeneratorFor(Template.RightSideFormEnum rightSideForm)
        {
            switch (rightSideForm)
            {
            case Template.RightSideFormEnum.Straight: return(straight);

            case Template.RightSideFormEnum.Steps: return(steps);

            case Template.RightSideFormEnum.Wave: return(wave);

            default:
                throw new NotSupportedException("Unknown right side form");
            }
        }