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);
        }
Exemple #2
0
        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.");
            }
        }
Exemple #3
0
        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);
            }
        }