/*++ Copyright (c) Microsoft Corporation Licensed under the MIT license. Module Name: - AppearanceConfig Abstract: - The implementation of the AppearanceConfig winrt class. Provides settings related to the appearance of the terminal, in both terminal control and terminal core. Author(s): - Pankaj Bhojwani - Nov 2020 --*/ #pragma once #include "AppearanceConfig.g.h" #include "IInheritable.h" #include "MTSMSettings.h" #include namespace winrt::Microsoft::Terminal::Settings::Model::implementation { struct AppearanceConfig : AppearanceConfigT, IInheritable { public: AppearanceConfig(winrt::weak_ref sourceProfile); static winrt::com_ptr CopyAppearance(const AppearanceConfig* source, winrt::weak_ref sourceProfile); Json::Value ToJson() const; void LayerJson(const Json::Value& json); Model::Profile SourceProfile(); winrt::hstring ExpandedBackgroundImagePath(); INHERITABLE_NULLABLE_SETTING(Model::IAppearanceConfig, Microsoft::Terminal::Core::Color, Foreground, nullptr); INHERITABLE_NULLABLE_SETTING(Model::IAppearanceConfig, Microsoft::Terminal::Core::Color, Background, nullptr); INHERITABLE_NULLABLE_SETTING(Model::IAppearanceConfig, Microsoft::Terminal::Core::Color, SelectionBackground, nullptr); INHERITABLE_NULLABLE_SETTING(Model::IAppearanceConfig, Microsoft::Terminal::Core::Color, CursorColor, nullptr); INHERITABLE_SETTING(Model::IAppearanceConfig, double, Opacity, 1.0); #define APPEARANCE_SETTINGS_INITIALIZE(type, name, jsonKey, ...) \ INHERITABLE_SETTING(Model::IAppearanceConfig, type, name, ##__VA_ARGS__) MTSM_APPEARANCE_SETTINGS(APPEARANCE_SETTINGS_INITIALIZE) #undef APPEARANCE_SETTINGS_INITIALIZE private: winrt::weak_ref _sourceProfile; }; }