private void AddOutlineShape(AriadneSettingsData data)
        {
            Random r = Maze.Random;

            double offCenter = data.OutlineOffCenter / 100.0;
            double size      = data.OutlineSize / 100.0;

            OutlineShape.OutlineShapeBuilder shapeBuilderDelegate = null;

            switch (data.OutlineKind)
            {
            case AriadneSettingsData.OutlineKindEnum.Random:
                shapeBuilderDelegate = OutlineShape.RandomOutlineShapeBuilder(r);
                break;

            case AriadneSettingsData.OutlineKindEnum.Circle:
                shapeBuilderDelegate = OutlineShape.Circle;
                break;

            case AriadneSettingsData.OutlineKindEnum.Diamond:
                shapeBuilderDelegate = OutlineShape.Diamond;
                break;

            case AriadneSettingsData.OutlineKindEnum.Character:
                shapeBuilderDelegate = OutlineShape.Character;
                break;

            case AriadneSettingsData.OutlineKindEnum.Symbol:
                shapeBuilderDelegate = OutlineShape.Symbol;
                break;

            case AriadneSettingsData.OutlineKindEnum.Polygon:
                shapeBuilderDelegate = OutlineShape.Polygon;
                break;

            case AriadneSettingsData.OutlineKindEnum.Function:
                shapeBuilderDelegate = OutlineShape.Function;
                break;

            case AriadneSettingsData.OutlineKindEnum.Bitmap:
                shapeBuilderDelegate = OutlineShape.Bitmap;
                break;

            case AriadneSettingsData.OutlineKindEnum.Tiles:
                shapeBuilderDelegate = OutlineShape.Tiles;
                break;

            case AriadneSettingsData.OutlineKindEnum.Rectangles:
                shapeBuilderDelegate = OutlineShape.Rectangles;
                break;

            case AriadneSettingsData.OutlineKindEnum.Grid:
                shapeBuilderDelegate = OutlineShape.Grid;
                break;

            case AriadneSettingsData.OutlineKindEnum.GridElement:
                shapeBuilderDelegate = OutlineShape.GridElement;
                break;

            case AriadneSettingsData.OutlineKindEnum.Maze:
                shapeBuilderDelegate = OutlineShape.Maze;
                break;

            case AriadneSettingsData.OutlineKindEnum.Lines:
                shapeBuilderDelegate = OutlineShape.Lines;
                break;

            case AriadneSettingsData.OutlineKindEnum.Circles:
                shapeBuilderDelegate = OutlineShape.Circles;
                break;
            }
            if (shapeBuilderDelegate != null)
            {
                OutlineShape shape = OutlineShape.RandomInstance(r, shapeBuilderDelegate, XSize, YSize, offCenter, size);

                if (data.DistortedOutlines)
                {
                    shape = shape.DistortedCopy(r);
                }

                if (data.AsEmbeddedMaze)
                {
                    Maze.AddEmbeddedMaze(shape);
                }
                else
                {
                    Maze.OutlineShape = shape;
                }
            }
        }