示例#1
0
        /// <summary>
        /// Gets the font family from the user settings Font
        /// </summary>
        /// <param name="fontFamily">the font family</param>
        /// <returns>the Windows font family</returns>
        private Media.FontFamily GetFontFamily(Microsoft.PlayerFramework.CaptionSettings.Model.FontFamily fontFamily)
        {
            if (this.fontMap == null)
            {
                this.fontMap = new Dictionary <Microsoft.PlayerFramework.CaptionSettings.Model.FontFamily, Media.FontFamily>();
            }

            Media.FontFamily mediaFontFamily;

            if (this.fontMap.TryGetValue(fontFamily, out mediaFontFamily))
            {
                return(mediaFontFamily);
            }

            var fontName = CaptionSettingsPluginBase.GetFontFamilyName(fontFamily);

            if (fontName == null)
            {
                return(null);
            }

            mediaFontFamily = new Media.FontFamily(fontName);

            this.fontMap[fontFamily] = mediaFontFamily;

            return(mediaFontFamily);
        }
        /// <summary>
        /// convert from a Caption Settings font family to the equivalent
        /// Windows installed font
        /// </summary>
        /// <param name="value">a Model.FontFamily</param>
        /// <param name="targetType">a Windows FontFamily</param>
        /// <param name="parameter">parameter not used</param>
        /// <param name="language">language not used</param>
        /// <returns>a <see cref="Windows.UI.Xaml.Media.FontFamily"/></returns>
        public object Convert(object value, Type targetType, object parameter, string language)
        {
            if (this.fontMap == null)
            {
                this.fontMap = new Dictionary <Model.FontFamily, FF.FontFamily>();
            }

            var captionFontFamily = (Model.FontFamily)value;

            if (captionFontFamily == Model.FontFamily.Default)
            {
                return(DependencyProperty.UnsetValue);
            }

            // Setting font disables small caps
            if (captionFontFamily == Model.FontFamily.Smallcaps)
            {
                return(DependencyProperty.UnsetValue);
            }

            FF.FontFamily fontFamily;

            lock (this.fontMap)
            {
                if (this.fontMap.TryGetValue(captionFontFamily, out fontFamily))
                {
                    return(fontFamily);
                }

                var familyName = CaptionSettingsPluginBase.GetFontFamilyName(captionFontFamily);

                if (string.IsNullOrWhiteSpace(familyName))
                {
                    return(DependencyProperty.UnsetValue);
                }

                fontFamily = new FF.FontFamily(familyName);
                this.fontMap[captionFontFamily] = fontFamily;

                return(fontFamily);
            }
        }