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

import "IKeyBindings.idl";
import "ICoreSettings.idl";

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

    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.Settings.ICoreSettings
    {
        String ProfileName;

        Boolean UseAcrylic;
        Double TintOpacity;
        ScrollbarState ScrollState;

        String FontFace;
        Int32 FontSize;
        Windows.UI.Text.FontWeight FontWeight;
        String Padding;

        IKeyBindings KeyBindings;

        Boolean CopyOnSelect;

        String Commandline;
        String StartingDirectory;
        String EnvironmentVariables;

        String BackgroundImage;
        Double BackgroundImageOpacity;
        Windows.UI.Xaml.Media.Stretch BackgroundImageStretchMode;
        Windows.UI.Xaml.HorizontalAlignment BackgroundImageHorizontalAlignment;
        Windows.UI.Xaml.VerticalAlignment BackgroundImageVerticalAlignment;

        UInt32 SelectionBackground;

        TextAntialiasingMode AntialiasingMode;

        Boolean RetroTerminalEffect;
        Boolean ForceFullRepaintRendering;
        Boolean SoftwareRendering;
    };
}
