/// <summary> /// Generate nfo line with proper indent and alignment /// </summary> /// <param name="style">NFO style parameter</param> /// <param name="content">the mutable part in this line</param> /// <returns>a well-formed nfo line</returns> private List <byte> GenerateMutableLine(NFOStyle style, string content, Alignment align) { List <byte> byteList = new List <byte>(); byteList.AddRange(style.Prefix1); switch (align) { case Alignment.Left: byteList.AddRange(CharacterEncodingUtil.StringToBytes(content.PadRight(style.LengthLimit, style.LinePaddingChar))); byteList.AddRange(style.Suffix); break; case Alignment.Middle: int remainingSpace = style.LengthLimit - content.Length; int leftRemainingSpace = remainingSpace / 2; int rightRemainingSpace = remainingSpace - leftRemainingSpace; byteList.AddRange(Enumerable.Repeat(CharacterEncodingUtil.CharToByte(style.LinePaddingChar), leftRemainingSpace).ToArray()); byteList.AddRange(CharacterEncodingUtil.StringToBytes(content)); byteList.AddRange(Enumerable.Repeat(CharacterEncodingUtil.CharToByte(style.LinePaddingChar), rightRemainingSpace).ToArray()); byteList.AddRange(style.Suffix); break; case Alignment.Right: byteList.AddRange(CharacterEncodingUtil.StringToBytes(content.PadLeft(style.LengthLimit, style.LinePaddingChar))); byteList.AddRange(style.Suffix); break; default: byteList.AddRange(CharacterEncodingUtil.StringToBytes(content.PadRight(style.LengthLimit, style.LinePaddingChar))); byteList.AddRange(style.Suffix); break; } return(byteList); }
/// <summary> /// Generate nfo line with proper indent and alignment /// </summary> /// <param name="nfoStyle">NFO style parameter</param> /// <param name="key">key for dictionary</param> /// <param name="line">a line from value for dictionary under length limit</param> /// <param name="containsKey">contains key when generate nfo line. Yes for the first line and No for others</param> /// <returns>a well-formed nfo line</returns> private List <byte> GenerateDictionaryLine(NFOStyle nfoStyle, string key, string line, bool containsKey) { List <byte> list = new List <byte>(); if (containsKey) { list.AddRange(nfoStyle.Prefix1); list.AddRange(CharacterEncodingUtil.StringToBytes(key)); list.AddRange(Enumerable.Repeat(CharacterEncodingUtil.CharToByte(nfoStyle.KeyPaddingChar), nfoStyle.KeyLength - key.Length).ToArray()); list.AddRange(nfoStyle.ConcatString); list.AddRange(CharacterEncodingUtil.StringToBytes(line)); list.AddRange(Enumerable.Repeat(CharacterEncodingUtil.CharToByte(nfoStyle.LinePaddingChar), nfoStyle.LineLength - line.Length).ToArray()); list.AddRange(nfoStyle.Suffix); } else { list.AddRange(nfoStyle.Prefix2); list.AddRange(CharacterEncodingUtil.StringToBytes(line)); list.AddRange(Enumerable.Repeat(CharacterEncodingUtil.CharToByte(nfoStyle.LinePaddingChar), nfoStyle.LineLength - line.Length).ToArray()); list.AddRange(nfoStyle.Suffix); } return(list); }
public ImmutableLine(string line) { base.bytes = CharacterEncodingUtil.StringToBytes(line); base.byteList = CharacterEncodingUtil.BytesToByteList(bytes); base.line = line; }