// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

import "IKeyBindings.idl";
import "IControlAppearance.idl";

namespace Microsoft.Terminal.Control
{
    enum ScrollbarState
    {
        Visible = 0,
        Hidden,
        Always
    };

    enum TextAntialiasingMode
    {
        Grayscale = 0,
        Cleartype,
        Aliased
    };

    // Class Description:
    // TerminalSettings encapsulates all settings that control the
    //      TermControl's behavior. In these settings there is both the entirety
    //      of the Core ITerminalSettings interface, and any additional settings
    //      for specifically the control.
    interface IControlSettings requires Microsoft.Terminal.Core.ICoreSettings,
                               Microsoft.Terminal.Control.IControlAppearance
    {
        String ProfileName;
        String ProfileSource;

        Boolean UseAcrylic { get; };
        ScrollbarState ScrollState { get; };

        Boolean UseAtlasEngine { get; };

        String FontFace { get; };
        Single FontSize { get; };
        Windows.UI.Text.FontWeight FontWeight { get; };
        String Padding { get; };
        Windows.Foundation.Collections.IMap<String, UInt32> FontFeatures { get; };
        Windows.Foundation.Collections.IMap<String, Single> FontAxes { get; };
        String CellWidth { get; };
        String CellHeight { get; };

        Microsoft.Terminal.Control.IKeyBindings KeyBindings { get; };

        Boolean CopyOnSelect { get; };
        Boolean FocusFollowMouse { get; };

        String Commandline { get; };
        String StartingDirectory { get; };

        TextAntialiasingMode AntialiasingMode { get; };

        // Experimental Settings
        Boolean ForceFullRepaintRendering { get; };
        Boolean SoftwareRendering { get; };
        Boolean ShowMarks { get; };
        Boolean UseBackgroundImageForWindow { get; };
        Boolean RightClickContextMenu { get; };
    };
}
