private void DrawFunnelFigure()
        {
            this.editor.Position.Translate(0, 0);
            this.editor.GraphicProperties.IsStroked = false;
            this.editor.GraphicProperties.FillColor = new RgbColor(147, 208, 237);

            this.editor.DrawEllipse(ExampleDocumentSizes.EllipseCenter, ExampleDocumentSizes.EllipseRadiuses.Width, ExampleDocumentSizes.EllipseRadiuses.Height);

            double funelBlockGap = (ExampleDocumentSizes.FunnelHeight - 3 * ExampleDocumentSizes.FunnelBlockHeight) / 2;

            double startPercent = 0;
            double endPercent   = ExampleDocumentSizes.GetPercentHeight(ExampleDocumentSizes.FunnelBlockHeight);

            this.DrawFunnelBlock(startPercent, endPercent);

            startPercent = ExampleDocumentSizes.GetPercentHeight(ExampleDocumentSizes.FunnelBlockHeight + funelBlockGap);
            endPercent   = ExampleDocumentSizes.GetPercentHeight(2 * ExampleDocumentSizes.FunnelBlockHeight + funelBlockGap);
            this.DrawFunnelBlock(startPercent, endPercent);

            startPercent = ExampleDocumentSizes.GetPercentHeight(2 * ExampleDocumentSizes.FunnelBlockHeight + 2 * funelBlockGap);
            endPercent   = ExampleDocumentSizes.GetPercentHeight(3 * ExampleDocumentSizes.FunnelBlockHeight + 2 * funelBlockGap);
            this.DrawFunnelBlock(startPercent, endPercent);

            this.editor.Position.Translate(ExampleDocumentSizes.ArrowStart.X - 18, ExampleDocumentSizes.ArrowStart.Y + ExampleDocumentSizes.ArrowLength + 5);
            this.editor.TextProperties.FontSize     = 18;
            this.editor.GraphicProperties.FillColor = new RgbColor(41, 156, 206);
            this.editor.TextProperties.TrySetFont(new FontFamily("Arial"), FontStyles.Normal, FontWeights.Bold);
            this.editor.DrawText("PDF");
            this.DrawArrow();
        }
        private void DrawFunnelBlock(double startPercentHeight, double endPercentHeight)
        {
            Point[] contourPoints = ExampleDocumentSizes.GetSubFunnelBlockContourPoints(startPercentHeight, endPercentHeight);
            this.editor.GraphicProperties.IsStroked = false;
            PathGeometry path   = new PathGeometry();
            PathFigure   figure = path.Figures.AddPathFigure();

            figure.StartPoint = contourPoints[0];
            figure.IsClosed   = true;
            string funnelBlockText;
            double textYOffset = 0;

            if (startPercentHeight == 0)
            {
                funnelBlockText = "IMAGES";
                this.editor.GraphicProperties.FillColor = new RgbColor(37, 160, 219);
                ArcSegment arc = figure.Segments.AddArcSegment();
                arc.Point          = contourPoints[1];
                arc.IsLargeArc     = false;
                arc.SweepDirection = SweepDirection.Counterclockwise;
                arc.RadiusX        = ExampleDocumentSizes.EllipseRadiuses.Width;
                arc.RadiusY        = ExampleDocumentSizes.EllipseRadiuses.Height;
                textYOffset        = arc.RadiusY / 2;
                figure.Segments.AddLineSegment(contourPoints[2]);
                figure.Segments.AddLineSegment(contourPoints[3]);
                textYOffset = ExampleDocumentSizes.EllipseRadiuses.Height;
            }
            else if (endPercentHeight == 1)
            {
                funnelBlockText = "FONTS";
                this.editor.GraphicProperties.FillColor = new RgbColor(42, 180, 0);
                figure.Segments.AddLineSegment(contourPoints[1]);
                figure.Segments.AddLineSegment(contourPoints[2]);
                ArcSegment arc = figure.Segments.AddArcSegment();
                arc.Point          = contourPoints[3];
                arc.IsLargeArc     = false;
                arc.SweepDirection = SweepDirection.Clockwise;
                arc.RadiusX        = ExampleDocumentSizes.EllipseRadiuses.Width;
                arc.RadiusY        = ExampleDocumentSizes.EllipseRadiuses.Height + 100;
            }
            else
            {
                funnelBlockText = "SHAPES";
                this.editor.GraphicProperties.FillColor = new RgbColor(255, 127, 0);
                figure.Segments.AddLineSegment(contourPoints[1]);
                figure.Segments.AddLineSegment(contourPoints[2]);
                figure.Segments.AddLineSegment(contourPoints[3]);
            }

            this.editor.DrawPath(path);

            using (this.editor.SavePosition())
            {
                Size textSize = new Size(contourPoints[1].X - contourPoints[0].X, ExampleDocumentSizes.FunnelBlockHeight - textYOffset);
                this.editor.Position.Translate(contourPoints[0].X, contourPoints[0].Y + textYOffset);
                DrawCenteredText(this.editor, funnelBlockText, textSize);
            }
        }