// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

using System.Windows;
using System.Windows.Documents;
using Microsoft.VisualStudio.Text.Classification;
using Microsoft.VisualStudio.Text.Formatting;

namespace Microsoft.CodeAnalysis.Editor.Shared.Extensions
{
    internal static class DependencyObjectExtensions
    {
        public static void SetTextProperties(this DependencyObject dependencyObject, TextFormattingRunProperties textProperties)
        {
            dependencyObject.SetValue(TextElement.FontFamilyProperty, textProperties.Typeface.FontFamily);
            dependencyObject.SetValue(TextElement.FontSizeProperty, textProperties.FontRenderingEmSize);
            dependencyObject.SetValue(TextElement.FontStyleProperty, textProperties.Italic ? FontStyles.Italic : FontStyles.Normal);
            dependencyObject.SetValue(TextElement.FontWeightProperty, textProperties.Bold ? FontWeights.Bold : FontWeights.Normal);
            dependencyObject.SetValue(TextElement.BackgroundProperty, textProperties.BackgroundBrush);
            dependencyObject.SetValue(TextElement.ForegroundProperty, textProperties.ForegroundBrush);
        }

        public static void SetDefaultTextProperties(this DependencyObject dependencyObject, IClassificationFormatMap formatMap)
            => dependencyObject.SetTextProperties(formatMap.DefaultTextProperties);
    }
}
