74f11b8203
## Summary of the Pull Request ![603-final](https://user-images.githubusercontent.com/18356694/132585665-afed3210-257a-4fee-9b43-4273a0f5cf69.gif) Adds support for vintage style opacity, on Windows 11+. The API we're using for this exists since the time immemorial, but there's a bug in XAML Islands that prevents it from working right until Windows 11 (which we're working on backporting). Replaces the `acrylicOpacity` setting with `opacity`, which is a uint between 0 and 100 (inclusive), default to 100. `useAcrylic` now controls whether acrylic is used or not. Setting an opacity < 100 with `"useAcrylic": false` will use vintage style opacity. Mouse wheeling adjusts opacity. Whether acrylic is used or not is dependent upon `useAcrylic`. `opacity` will stealthily default to 50 if `useAcrylic:true` is set. ## PR Checklist * [x] Closes #603 * [x] I work here * [x] Tests added/passed * [x] https://github.com/MicrosoftDocs/terminal/pull/416 ## Detailed Description of the Pull Request / Additional comments Opacity was moved to AppearanceConfig. In the future, I have a mind to allow unfocused acrylic, so that'll be important then. ## Validation Steps Performed _just look at it_
100 lines
5.1 KiB
C++
100 lines
5.1 KiB
C++
/*++
|
|
Copyright (c) Microsoft Corporation
|
|
Licensed under the MIT license.
|
|
--*/
|
|
#pragma once
|
|
|
|
#include "../inc/cppwinrt_utils.h"
|
|
#include <DefaultSettings.h>
|
|
#include <conattrs.hpp>
|
|
|
|
using IFontFeatureMap = winrt::Windows::Foundation::Collections::IMap<winrt::hstring, uint32_t>;
|
|
using IFontAxesMap = winrt::Windows::Foundation::Collections::IMap<winrt::hstring, float>;
|
|
|
|
namespace ControlUnitTests
|
|
{
|
|
class MockControlSettings : public winrt::implements<MockControlSettings, winrt::Microsoft::Terminal::Core::ICoreSettings, winrt::Microsoft::Terminal::Control::IControlSettings, winrt::Microsoft::Terminal::Core::ICoreAppearance, winrt::Microsoft::Terminal::Control::IControlAppearance>
|
|
{
|
|
public:
|
|
MockControlSettings() = default;
|
|
|
|
// --------------------------- Core Settings ---------------------------
|
|
// All of these settings are defined in ICoreSettings.
|
|
|
|
WINRT_PROPERTY(til::color, DefaultForeground, DEFAULT_FOREGROUND);
|
|
WINRT_PROPERTY(til::color, DefaultBackground, DEFAULT_BACKGROUND);
|
|
WINRT_PROPERTY(til::color, SelectionBackground, DEFAULT_FOREGROUND);
|
|
WINRT_PROPERTY(int32_t, HistorySize, DEFAULT_HISTORY_SIZE);
|
|
WINRT_PROPERTY(int32_t, InitialRows, 30);
|
|
WINRT_PROPERTY(int32_t, InitialCols, 80);
|
|
|
|
WINRT_PROPERTY(bool, SnapOnInput, true);
|
|
WINRT_PROPERTY(bool, AltGrAliasing, true);
|
|
WINRT_PROPERTY(til::color, CursorColor, DEFAULT_CURSOR_COLOR);
|
|
WINRT_PROPERTY(winrt::Microsoft::Terminal::Core::CursorStyle, CursorShape, winrt::Microsoft::Terminal::Core::CursorStyle::Vintage);
|
|
WINRT_PROPERTY(uint32_t, CursorHeight, DEFAULT_CURSOR_HEIGHT);
|
|
WINRT_PROPERTY(winrt::hstring, WordDelimiters, DEFAULT_WORD_DELIMITERS);
|
|
WINRT_PROPERTY(bool, CopyOnSelect, false);
|
|
WINRT_PROPERTY(bool, InputServiceWarning, true);
|
|
WINRT_PROPERTY(bool, FocusFollowMouse, false);
|
|
|
|
WINRT_PROPERTY(winrt::Windows::Foundation::IReference<winrt::Microsoft::Terminal::Core::Color>, TabColor, nullptr);
|
|
|
|
WINRT_PROPERTY(winrt::Windows::Foundation::IReference<winrt::Microsoft::Terminal::Core::Color>, StartingTabColor, nullptr);
|
|
|
|
winrt::Microsoft::Terminal::Core::ICoreAppearance UnfocusedAppearance() { return {}; };
|
|
|
|
WINRT_PROPERTY(bool, TrimBlockSelection, false);
|
|
WINRT_PROPERTY(bool, DetectURLs, true);
|
|
WINRT_PROPERTY(bool, IntenseIsBright, true);
|
|
// ------------------------ End of Core Settings -----------------------
|
|
|
|
WINRT_PROPERTY(winrt::hstring, ProfileName);
|
|
WINRT_PROPERTY(bool, UseAcrylic, false);
|
|
WINRT_PROPERTY(double, Opacity, .5);
|
|
WINRT_PROPERTY(winrt::hstring, Padding, DEFAULT_PADDING);
|
|
WINRT_PROPERTY(winrt::hstring, FontFace, L"Consolas");
|
|
WINRT_PROPERTY(int32_t, FontSize, DEFAULT_FONT_SIZE);
|
|
|
|
WINRT_PROPERTY(winrt::Windows::UI::Text::FontWeight, FontWeight);
|
|
|
|
WINRT_PROPERTY(winrt::hstring, BackgroundImage);
|
|
WINRT_PROPERTY(double, BackgroundImageOpacity, 1.0);
|
|
|
|
WINRT_PROPERTY(winrt::Windows::UI::Xaml::Media::Stretch, BackgroundImageStretchMode, winrt::Windows::UI::Xaml::Media::Stretch::UniformToFill);
|
|
WINRT_PROPERTY(winrt::Windows::UI::Xaml::HorizontalAlignment, BackgroundImageHorizontalAlignment, winrt::Windows::UI::Xaml::HorizontalAlignment::Center);
|
|
WINRT_PROPERTY(winrt::Windows::UI::Xaml::VerticalAlignment, BackgroundImageVerticalAlignment, winrt::Windows::UI::Xaml::VerticalAlignment::Center);
|
|
|
|
WINRT_PROPERTY(winrt::Microsoft::Terminal::Control::IKeyBindings, KeyBindings, nullptr);
|
|
|
|
WINRT_PROPERTY(winrt::hstring, Commandline);
|
|
WINRT_PROPERTY(winrt::hstring, StartingDirectory);
|
|
WINRT_PROPERTY(winrt::hstring, StartingTitle);
|
|
WINRT_PROPERTY(bool, SuppressApplicationTitle);
|
|
WINRT_PROPERTY(winrt::hstring, EnvironmentVariables);
|
|
|
|
WINRT_PROPERTY(winrt::Microsoft::Terminal::Control::ScrollbarState, ScrollState, winrt::Microsoft::Terminal::Control::ScrollbarState::Visible);
|
|
|
|
WINRT_PROPERTY(winrt::Microsoft::Terminal::Control::TextAntialiasingMode, AntialiasingMode, winrt::Microsoft::Terminal::Control::TextAntialiasingMode::Grayscale);
|
|
|
|
WINRT_PROPERTY(bool, RetroTerminalEffect, false);
|
|
WINRT_PROPERTY(bool, ForceFullRepaintRendering, false);
|
|
WINRT_PROPERTY(bool, SoftwareRendering, false);
|
|
WINRT_PROPERTY(bool, ForceVTInput, false);
|
|
|
|
WINRT_PROPERTY(winrt::hstring, PixelShaderPath);
|
|
|
|
WINRT_PROPERTY(IFontFeatureMap, FontFeatures);
|
|
WINRT_PROPERTY(IFontAxesMap, FontAxes);
|
|
WINRT_PROPERTY(bool, IntenseIsBold, true);
|
|
|
|
private:
|
|
std::array<winrt::Microsoft::Terminal::Core::Color, COLOR_TABLE_SIZE> _ColorTable;
|
|
|
|
public:
|
|
winrt::Microsoft::Terminal::Core::Color GetColorTableEntry(int32_t index) noexcept { return _ColorTable.at(index); }
|
|
std::array<winrt::Microsoft::Terminal::Core::Color, 16> ColorTable() { return _ColorTable; }
|
|
void ColorTable(std::array<winrt::Microsoft::Terminal::Core::Color, 16> /*colors*/) {}
|
|
};
|
|
}
|