protected static string ParseExtendedTextFrame(byte[] data, out string description, out LanguageCode language) { int place = 0; SingleByteField encodingField = new SingleByteField(); place += encodingField.Parse(data, place); FixedLengthAsciiTextField langField = new FixedLengthAsciiTextField(3); place += langField.Parse(data, place); TextField descriptinoField = TextField.CreateTextField(true, (EncodingScheme)encodingField.Value); place += descriptinoField.Parse(data, place); TextField textField = TextField.CreateTextField(false, (EncodingScheme)encodingField.Value); place += textField.Parse(data, place); if (!Enum.IsDefined(typeof(LanguageCode), langField.Text)) { langField.Text = "Unknown"; } language = (LanguageCode)Enum.Parse(typeof(LanguageCode), langField.Text); description = descriptinoField.Text; return(textField.Text); }
protected override Frame ParseFrame(byte[] data) { int place = 0; SingleByteField encodingField = new SingleByteField(); place += encodingField.Parse(data, place); FixedLengthAsciiTextField imageFormatField = new FixedLengthAsciiTextField(3); place += imageFormatField.Parse(data, place); SingleByteField pictureTypeField = new SingleByteField(); place += pictureTypeField.Parse(data, place); TextField descriptionField = TextField.CreateTextField(true, (EncodingScheme)encodingField.Value); place += descriptionField.Parse(data, place); BinaryField dataField = new BinaryField(); place += dataField.Parse(data, place); System.IO.MemoryStream memoryImageBuffer = new System.IO.MemoryStream(dataField.Data); try { var image = Image.Load(memoryImageBuffer); return(new PictureFrame(dataField.Data, image, descriptionField.Text, (PictureType)pictureTypeField.Value)); } catch (ArgumentException) { throw new FrameParsingException("Unrecognized picture format found in Picture frame."); } }
public void DoTest() { foreach (string testCase in _asciiTestCases) { FixedLengthAsciiTextField field = new FixedLengthAsciiTextField(testCase); MemoryStream stream = new MemoryStream(); field.WriteToStream(stream); FixedLengthAsciiTextField field2 = new FixedLengthAsciiTextField(testCase.Length); field2.Parse(stream.GetBuffer(), 0); Assert.AreEqual(field.Text, field2.Text); } }