File: DesignerOptionServiceExt.cs
Web Access
Project: src\src\test\integration\DesignSurface\DesignSurfaceExt\DesignSurfaceExt.csproj (DesignSurfaceExt)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace DesignSurfaceExt;
 
internal class DesignerOptionServiceBase : DesignerOptionService
{
    private readonly Size _gridSize;
    private readonly bool _useSnapLines;
    private readonly bool _snapToGrid;
    private readonly bool _showGrid;
 
    protected DesignerOptionServiceBase(Size gridSize, bool useSnapLines, bool snapToGrid, bool showGrid)
    {
        _gridSize = gridSize;
        _useSnapLines = useSnapLines;
        _snapToGrid = snapToGrid;
        _showGrid = showGrid;
    }
 
    protected override void PopulateOptionCollection(DesignerOptionCollection options)
    {
        if (options.Parent is not null)
            return;
 
        DesignerOptions ops = new()
        {
            GridSize = _gridSize,
            UseSnapLines = _useSnapLines,
            SnapToGrid = _snapToGrid,
            ShowGrid = _showGrid,
            UseSmartTags = true,
            ObjectBoundSmartTagAutoShow = false
        };
 
        DesignerOptionCollection wfd = CreateOptionCollection(options, "WindowsFormsDesigner", null);
        CreateOptionCollection(wfd, "General", ops);
    }
}
 
internal sealed class DesignerOptionService4SnapLinesExtension : DesignerOptionServiceBase
{
    public DesignerOptionService4SnapLinesExtension()
        : base(new Size(0, 0), snapToGrid: true, useSnapLines: false, showGrid: false) { }
}
 
internal sealed class DesignerOptionService4GridExtension : DesignerOptionServiceBase
{
    public DesignerOptionService4GridExtension(Size gridSize)
        : base(gridSize, useSnapLines: false, snapToGrid: true, showGrid: true) { }
}
 
internal sealed class DesignerOptionService4GridWithoutSnappingExtension : DesignerOptionServiceBase
{
    public DesignerOptionService4GridWithoutSnappingExtension(Size gridSize)
        : base(gridSize, useSnapLines: false, snapToGrid: false, showGrid: true) { }
}
 
internal sealed class DesignerOptionService4NoGuidesExtension : DesignerOptionServiceBase
{
    public DesignerOptionService4NoGuidesExtension ()
        : base(new Size(8, 8), useSnapLines: false, snapToGrid: false, showGrid: false) { }
}