File: System\Drawing\Printing\PrinterResolution.cs
Web Access
Project: src\src\System.Drawing.Common\src\System.Drawing.Common.csproj (System.Drawing.Common)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.ComponentModel;
 
namespace System.Drawing.Printing;
 
/// <summary>
///  Retrieves the resolution supported by a printer.
/// </summary>
public partial class PrinterResolution
{
    private PrinterResolutionKind _kind;
 
    /// <summary>
    ///  Initializes a new instance of the <see cref='PrinterResolution'/> class with default properties.
    /// </summary>
    public PrinterResolution()
    {
        _kind = PrinterResolutionKind.Custom;
    }
 
    internal PrinterResolution(PrinterResolutionKind kind, int x, int y)
    {
        _kind = kind;
        X = x;
        Y = y;
    }
 
    /// <summary>
    ///  Gets a value indicating the kind of printer resolution.
    /// </summary>
    public PrinterResolutionKind Kind
    {
        get => _kind;
        set
        {
            if (value is < PrinterResolutionKind.High or > PrinterResolutionKind.Custom)
            {
                throw new InvalidEnumArgumentException(nameof(value), (int)value, typeof(PrinterResolutionKind));
            }
 
            _kind = value;
        }
    }
 
    /// <summary>
    ///  Gets the printer resolution in the horizontal direction, in dots per inch.
    /// </summary>
    public int X { get; set; }
 
    /// <summary>
    ///  Gets the printer resolution in the vertical direction, in dots per inch.
    /// </summary>
    public int Y { get; set; }
 
    public override string ToString() => _kind != PrinterResolutionKind.Custom
        ? $"[PrinterResolution {Kind}]"
        : FormattableString.Invariant($"[PrinterResolution X={X} Y={Y}]");
}