Exemplo n.º 1
0
        private Controls.LayerFrame Text(TextOverlaySettings settings, string text)
        {
            var control = Generate(settings, text, ConvertColor(settings.BackgroundColor));

            control.Label.FontSize = settings.FontSize;

            control.Border.Padding = new Thickness(settings.HorizontalPadding,
                                                   settings.VerticalPadding,
                                                   settings.HorizontalPadding,
                                                   settings.VerticalPadding);

            control.Label.Foreground       = new SolidColorBrush(ConvertColor(settings.FontColor));
            control.Border.BorderThickness = new Thickness(settings.BorderThickness);
            control.Border.BorderBrush     = new SolidColorBrush(ConvertColor(settings.BorderColor));

            control.Border.CornerRadius = new CornerRadius(settings.CornerRadius);

            settings.PropertyChanged += (s, e) =>
            {
                switch (e.PropertyName)
                {
                case nameof(settings.BackgroundColor):
                    control.Border.Background = new SolidColorBrush(ConvertColor(settings.BackgroundColor));
                    break;

                case nameof(settings.FontColor):
                    control.Label.Foreground = new SolidColorBrush(ConvertColor(settings.FontColor));
                    break;

                case nameof(settings.BorderThickness):
                    control.Border.BorderThickness = new Thickness(settings.BorderThickness);
                    break;

                case nameof(settings.BorderColor):
                    control.Border.BorderBrush = new SolidColorBrush(ConvertColor(settings.BorderColor));
                    break;

                case nameof(settings.FontSize):
                    control.Label.FontSize = settings.FontSize;
                    break;

                case nameof(settings.HorizontalPadding):
                case nameof(settings.VerticalPadding):
                    control.Border.Padding = new Thickness(settings.HorizontalPadding,
                                                           settings.VerticalPadding,
                                                           settings.HorizontalPadding,
                                                           settings.VerticalPadding);
                    break;

                case nameof(settings.CornerRadius):
                    control.Border.CornerRadius = new CornerRadius(settings.CornerRadius);
                    break;
                }
            };

            return(control);
        }
Exemplo n.º 2
0
        public TextOverlayReactor(TextOverlaySettings Settings)
        {
            FontFamily = Settings
                         .ObserveProperty(M => M.FontFamily)
                         .Select(M => new FontFamily(M))
                         .ToReadOnlyReactivePropertySlim();

            FontSize = Settings
                       .ObserveProperty(M => M.FontSize)
                       .ToReadOnlyReactivePropertySlim();

            Padding = new[]
            {
                Settings
                .ObserveProperty(M => M.HorizontalPadding),
                Settings
                .ObserveProperty(M => M.VerticalPadding)
            }
            .CombineLatest(M =>
            {
                var w = M[0];
                var h = M[1];

                return(new Thickness(w, h, w, h));
            })
            .ToReadOnlyReactivePropertySlim();

            Foreground = Settings
                         .ObserveProperty(M => M.FontColor)
                         .Select(M => new SolidColorBrush(M.ToWpfColor()))
                         .ToReadOnlyReactivePropertySlim();

            Background = Settings
                         .ObserveProperty(M => M.BackgroundColor)
                         .Select(M => new SolidColorBrush(M.ToWpfColor()))
                         .ToReadOnlyReactivePropertySlim();

            BorderThickness = Settings
                              .ObserveProperty(M => M.BorderThickness)
                              .Select(M => new Thickness(M))
                              .ToReadOnlyReactivePropertySlim();

            BorderBrush = Settings
                          .ObserveProperty(M => M.BorderColor)
                          .Select(M => new SolidColorBrush(M.ToWpfColor()))
                          .ToReadOnlyReactivePropertySlim();

            CornerRadius = Settings
                           .ObserveProperty(M => M.CornerRadius)
                           .Select(M => new CornerRadius(M))
                           .ToReadOnlyReactivePropertySlim();
        }
Exemplo n.º 3
0
        static float GetTop(TextOverlaySettings OverlaySettings, float FullHeight, float TextHeight)
        {
            var y = OverlaySettings.Y;

            switch (OverlaySettings.VerticalAlignment)
            {
            case Alignment.Start:
                return(y);

            case Alignment.End:
                return(FullHeight - y - TextHeight - 2 * OverlaySettings.VerticalPadding);

            case Alignment.Center:
                return(FullHeight / 2 + y - TextHeight / 2 - OverlaySettings.VerticalPadding);

            default:
                return(0);
            }
        }
Exemplo n.º 4
0
        static float GetLeft(TextOverlaySettings OverlaySettings, float FullWidth, float TextWidth)
        {
            var x = OverlaySettings.X;

            switch (OverlaySettings.HorizontalAlignment)
            {
            case Alignment.Start:
                return(x);

            case Alignment.End:
                return(FullWidth - x - TextWidth - 2 * OverlaySettings.HorizontalPadding);

            case Alignment.Center:
                return(FullWidth / 2 + x - TextWidth / 2 - OverlaySettings.HorizontalPadding);

            default:
                return(0);
            }
        }
Exemplo n.º 5
0
        private static float GetTop(TextOverlaySettings overlaySettings, float fullHeight, float textHeight)
        {
            var y = overlaySettings.Y;

            switch (overlaySettings.VerticalAlignment)
            {
            case Alignment.Start:
                return(y);

            case Alignment.End:
                return(fullHeight - y - textHeight - 2 * overlaySettings.VerticalPadding);

            case Alignment.Center:
                return(fullHeight / 2 + y - textHeight / 2 - overlaySettings.VerticalPadding);

            default:
                return(0);
            }
        }
Exemplo n.º 6
0
        private static float GetLeft(TextOverlaySettings overlaySettings, float fullWidth, float textWidth)
        {
            var x = overlaySettings.X;

            switch (overlaySettings.HorizontalAlignment)
            {
            case Alignment.Start:
                return(x);

            case Alignment.End:
                return(fullWidth - x - textWidth - 2 * overlaySettings.HorizontalPadding);

            case Alignment.Center:
                return(fullWidth / 2 + x - textWidth / 2 - overlaySettings.HorizontalPadding);

            default:
                return(0);
            }
        }
Exemplo n.º 7
0
        static float GetTop(TextOverlaySettings KeystrokesSettings, float FullHeight, float TextHeight, float Offset = 0)
        {
            var y       = KeystrokesSettings.Y;
            var padding = KeystrokesSettings.VerticalPadding;

            switch (KeystrokesSettings.VerticalAlignment)
            {
            case Alignment.Start:
                return(y + Offset);

            case Alignment.End:
                return(FullHeight - y - TextHeight - 2 * padding - Offset);

            case Alignment.Center:
                return(FullHeight / 2 + y - TextHeight / 2 - padding + Offset);

            default:
                return(0);
            }
        }
Exemplo n.º 8
0
        public static float GetLeft(TextOverlaySettings KeystrokesSettings, float FullWidth, float TextWidth)
        {
            var x       = KeystrokesSettings.X;
            var padding = KeystrokesSettings.HorizontalPadding;

            switch (KeystrokesSettings.HorizontalAlignment)
            {
            case Alignment.Start:
                return(x);

            case Alignment.End:
                return(FullWidth - x - TextWidth - 2 * padding);

            case Alignment.Center:
                return(FullWidth / 2 + x - TextWidth / 2 - padding);

            default:
                return(0);
            }
        }
Exemplo n.º 9
0
 protected TextOverlay(TextOverlaySettings OverlaySettings)
 {
     _overlaySettings = OverlaySettings;
 }
Exemplo n.º 10
0
 public ElapsedOverlay(TextOverlaySettings OverlaySettings, Func <TimeSpan> Elapsed) : base(OverlaySettings)
 {
     _elapsed = Elapsed;
 }
Exemplo n.º 11
0
 public ElapsedOverlay(TextOverlaySettings overlaySettings, Func <TimeSpan> elapsed) : base(overlaySettings)
 {
     _elapsed = elapsed;
 }