public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            Template.BottomSideFormEnum bottomSideForm = (Template.BottomSideFormEnum)value;
            DoubleCollection            strokeArr      = new DoubleCollection()
            {
            };

            switch (bottomSideForm)
            {
            case Template.BottomSideFormEnum.NotDefined:
            case Template.BottomSideFormEnum.Straight:
            case Template.BottomSideFormEnum.Wave:
                strokeArr = new DoubleCollection()
                {
                    3, 0
                };
                break;

            case Template.BottomSideFormEnum.Dotted:
                strokeArr = new DoubleCollection()
                {
                    3, 3
                };
                break;

            default:
                break;
            }
            return(strokeArr);
        }
        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.BottomSideFormEnum bottomSideForm      = (Template.BottomSideFormEnum)values[2];
            ISideCurveGenerator         bottomSideGenerator = SideCurveGeneratorFactory.GetGeneratorFor(bottomSideForm);

            return(new PointCollection(Drawing.GetBottomPolyline(width, height, bottomSideGenerator)));
        }
        public static ISideCurveGenerator GetGeneratorFor(Template.BottomSideFormEnum bottomSideForm)
        {
            switch (bottomSideForm)
            {
            case Template.BottomSideFormEnum.NotDefined: return(straight);

            case Template.BottomSideFormEnum.Straight: return(straight);

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

            case Template.BottomSideFormEnum.Dotted: return(straight);

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