    ﻿using Nikse.SubtitleEdit.Core.SubtitleFormats;
    using System;
    using System.Drawing;
    using System.Text;

    namespace Nikse.SubtitleEdit.Core
    {
        public class SsaStyle
        {
            public string Name { get; set; }
            public string FontName { get; set; }
            public int FontSize { get; set; }
            public bool Italic { get; set; }
            public bool Bold { get; set; }
            public bool Underline { get; set; }
            public Color Primary { get; set; }
            public Color Secondary { get; set; }
            public Color Tertiary { get; set; }
            public Color Outline { get; set; }
            public Color Background { get; set; }
            public decimal ShadowWidth { get; set; }
            public decimal OutlineWidth { get; set; }
            public string Alignment { get; set; }
            public int MarginLeft { get; set; }
            public int MarginRight { get; set; }
            public int MarginVertical { get; set; }
            public string BorderStyle { get; set; }
            public string RawLine { get; set; }
            public bool LoadedFromHeader { get; set; }

            public SsaStyle()
            {
                FontName = Configuration.Settings.SubtitleSettings.SsaFontName;
                FontSize = (int)Configuration.Settings.SubtitleSettings.SsaFontSize;
                Primary = Color.FromArgb(Configuration.Settings.SubtitleSettings.SsaFontColorArgb);
                Secondary = Color.Yellow;
                Outline = Color.Black;
                Background = Color.Black;
                Alignment = "2";
                OutlineWidth = Configuration.Settings.SubtitleSettings.SsaOutline;
                ShadowWidth = Configuration.Settings.SubtitleSettings.SsaShadow;
                MarginLeft = 10;
                MarginRight = 10;
                MarginVertical = 10;
                BorderStyle = "1";
                if (Configuration.Settings.SubtitleSettings.SsaOpaqueBox)
                    BorderStyle = "3";
                RawLine = string.Empty;
                LoadedFromHeader = false;
            }

            public SsaStyle(SsaStyle ssaStyle)
            {
                Name = ssaStyle.Name;
                FontName = ssaStyle.FontName;
                FontSize = ssaStyle.FontSize;

                Italic = ssaStyle.Italic;
                Bold = ssaStyle.Bold;
                Underline = ssaStyle.Underline;

                Primary = ssaStyle.Primary;
                Secondary = ssaStyle.Secondary;
                Tertiary = ssaStyle.Tertiary;
                Outline = ssaStyle.Outline;
                Background = ssaStyle.Background;

                ShadowWidth = ssaStyle.ShadowWidth;
                OutlineWidth = ssaStyle.OutlineWidth;

                Alignment = ssaStyle.Alignment;
                MarginLeft = ssaStyle.MarginLeft;
                MarginRight = ssaStyle.MarginRight;
                MarginVertical = ssaStyle.MarginVertical;

                BorderStyle = ssaStyle.BorderStyle;
                RawLine = ssaStyle.RawLine;
                LoadedFromHeader = ssaStyle.LoadedFromHeader;
            }

            public string ToRawSsa(string styleFormat)
            {
                var sb = new StringBuilder();
                sb.Append("Style: ");
                var format = styleFormat.ToLowerInvariant().Substring(8).Split(',');
                for (int i = 0; i < format.Length; i++)
                {
                    string f = format[i].Trim();
                    if (f == "name")
                        sb.Append(Name);
                    else if (f == "fontname")
                        sb.Append(FontName);
                    else if (f == "fontsize")
                        sb.Append(FontSize);
                    else if (f == "primarycolour")
                        sb.Append(ColorTranslator.ToWin32(Primary));
                    else if (f == "secondarycolour")
                        sb.Append(ColorTranslator.ToWin32(Secondary));
                    else if (f == "tertiarycolour")
                        sb.Append(ColorTranslator.ToWin32(Tertiary));
                    else if (f == "outlinecolour")
                        sb.Append(ColorTranslator.ToWin32(Outline));
                    else if (f == "backcolour")
                        sb.Append(ColorTranslator.ToWin32(Background));
                    else if (f == "bold")
                        sb.Append(Convert.ToInt32(Bold));
                    else if (f == "italic")
                        sb.Append(Convert.ToInt32(Italic));
                    else if (f == "underline")
                        sb.Append(Convert.ToInt32(Underline));
                    else if (f == "outline")
                        sb.Append(Outline);
                    else if (f == "shadow")
                        sb.Append(OutlineWidth);
                    else if (f == "shadow")
                        sb.Append(ShadowWidth);
                    else if (f == "marginl")
                        sb.Append(MarginLeft);
                    else if (f == "marginr")
                        sb.Append(MarginRight);
                    else if (f == "marginv")
                        sb.Append(MarginVertical);
                    else if (f == "borderstyle")
                        sb.Append(BorderStyle);
                    else if (f == "encoding")
                        sb.Append('1');
                    else if (f == "strikeout")
                        sb.Append('0');
                    else if (f == "scalex")
                        sb.Append("100");
                    else if (f == "scaley")
                        sb.Append("100");
                    else if (f == "spacing")
                        sb.Append('0');
                    else if (f == "angle")
                        sb.Append('0');
                    sb.Append(',');
                }
                string s = sb.ToString().Trim();
                return s.Substring(0, s.Length - 1);
            }

            public string ToRawAss(string styleFormat)
            {
                var sb = new StringBuilder();
                sb.Append("Style: ");
                var format = styleFormat.ToLowerInvariant().Substring(8).Split(',');
                for (int i = 0; i < format.Length; i++)
                {
                    string f = format[i].Trim();
                    if (f == "name")
                        sb.Append(Name);
                    else if (f == "fontname")
                        sb.Append(FontName);
                    else if (f == "fontsize")
                        sb.Append(FontSize);
                    else if (f == "primarycolour")
                        sb.Append(AdvancedSubStationAlpha.GetSsaColorString(Primary));
                    else if (f == "secondarycolour")
                        sb.Append(AdvancedSubStationAlpha.GetSsaColorString(Secondary));
                    else if (f == "tertiarycolour")
                        sb.Append(AdvancedSubStationAlpha.GetSsaColorString(Tertiary));
                    else if (f == "outlinecolour")
                        sb.Append(AdvancedSubStationAlpha.GetSsaColorString(Outline));
                    else if (f == "backcolour")
                        sb.Append(AdvancedSubStationAlpha.GetSsaColorString(Background));
                    else if (f == "bold")
                        sb.Append(Convert.ToInt32(Bold));
                    else if (f == "italic")
                        sb.Append(Convert.ToInt32(Italic));
                    else if (f == "underline")
                        sb.Append(Convert.ToInt32(Underline));
                    else if (f == "outline")
                        sb.Append(OutlineWidth);
                    else if (f == "shadow")
                        sb.Append(ShadowWidth);
                    else if (f == "alignment")
                        sb.Append(Alignment);
                    else if (f == "marginl")
                        sb.Append(MarginLeft);
                    else if (f == "marginr")
                        sb.Append(MarginRight);
                    else if (f == "marginv")
                        sb.Append(MarginVertical);
                    else if (f == "borderstyle")
                        sb.Append(BorderStyle);
                    else if (f == "encoding")
                        sb.Append('1');
                    else if (f == "strikeout")
                        sb.Append('0');
                    else if (f == "scalex")
                        sb.Append("100");
                    else if (f == "scaley")
                        sb.Append("100");
                    else if (f == "spacing")
                        sb.Append('0');
                    else if (f == "angle")
                        sb.Append('0');
                    sb.Append(',');
                }
                string s = sb.ToString().Trim();
                return s.Substring(0, s.Length - 1);
            }
        }
    }

↑ V3003 The use of 'if (A) {...} else if (A) {...}' pattern was detected. There is a probability of logical error presence. Check lines: 113, 115.