Exemplo n.º 1
0
        protected string DecodeText(byte[] text, TextEncodings encoding)
        {
            switch (encoding)
            {
                case TextEncodings.Iso55591:
                    return Encoding.GetEncoding(0x6faf).GetString(text).TrimEnd('\0');

                case TextEncodings.Utf8:
                    return Encoding.UTF8.GetString(text).TrimEnd('\0');

                case TextEncodings.Utf16:

                    if (text.Length == 0)
                        return string.Empty;

                    if (text[0] == 0xFE && text[1] == 0xFF)
                        return Encoding.BigEndianUnicode.GetString(text, 2, text.Length - 2).TrimEnd('\0');

                    if (text[0] == 0xFF && text[1] == 0xFE)
                        return Encoding.Unicode.GetString(text, 2, text.Length - 2).TrimEnd('\0');

                    throw new NotSupportedException();

                case TextEncodings.Utf16Be:
                    return Encoding.BigEndianUnicode.GetString(text).TrimEnd('\0');

                default:
                    throw new NotSupportedException();
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Get length of Specific string according to Encoding
        /// </summary>
        /// <param name="Text">Text to get length</param>
        /// <param name="TEncoding">TextEncoding to use for Length calculation</param>
        /// <returns>Length of text</returns>
        protected static int GetTextLength(string Text, TextEncodings TEncoding, bool AddNullCharacter)
        {
            int StringLength;

            StringLength = Text.Length;

            if (TEncoding == TextEncodings.UTF_16 || TEncoding == TextEncodings.UTF_16BE || !IsAscii(Text))
            {
                StringLength *= 2; // in UTF-16 each character is 2 bytes
                StringLength += 2;
            }
            if (TEncoding == TextEncodings.UTF8)
            {
                StringLength += 3;
            }

            if (AddNullCharacter)
            {
                if (TEncoding == TextEncodings.UTF_16 || TEncoding == TextEncodings.UTF_16BE)
                {
                    StringLength += 2;
                }
                else
                {
                    StringLength++;
                }
            }

            return(StringLength);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Create new AttachedPicture frame
 /// </summary>
 /// <param name="Flags">Flags of frame</param>
 /// <param name="Description">Description of picture</param>
 /// <param name="TextEncoding">TextEncoding use for texts</param>
 /// <param name="MIMEType">MimeType of picture</param>
 /// <param name="PictureType">Picture type</param>
 /// <param name="Data">Data Contain picture</param>
 public AttachedPictureFrame(FrameFlags Flags, string Description,
     TextEncodings TextEncoding, string MIMEType, PictureTypes PictureType,
     MemoryStream Data)
     : base("APIC", Flags, Description, MIMEType, TextEncoding, Data)
 {
     _PictureType = PictureType;
 }
Exemplo n.º 4
0
 /// <summary>
 /// Create new AttachedPicture frame
 /// </summary>
 /// <param name="Flags">Flags of frame</param>
 /// <param name="Description">Description of picture</param>
 /// <param name="TextEncoding">TextEncoding use for texts</param>
 /// <param name="MIMEType">MimeType of picture</param>
 /// <param name="PictureType">Picture type</param>
 /// <param name="Data">Data Contain picture</param>
 public AttachedPictureFrame(FrameFlags Flags, string Description,
                             TextEncodings TextEncoding, string MIMEType, PictureTypes PictureType,
                             MemoryStream Data)
     : base("APIC", Flags, Description, MIMEType, TextEncoding, Data)
 {
     _PictureType = PictureType;
 }
Exemplo n.º 5
0
 public OwnershipFrame(FrameFlags Flags, Price PricePayed, SDate PurchDate,
                       string Seller, TextEncodings TEncoding)
     : base("OWNE", Flags)
 {
     _Price       = PricePayed;
     _DateOfPurch = PurchDate;
     this.Seller  = Seller;
 }
Exemplo n.º 6
0
 public TermOfUseFrame(FrameFlags Flags, string Text,
                       TextEncodings TextEncoding, string Lang)
     : base("USER", Flags)
 {
     this.Text         = Text;
     this.TextEncoding = TextEncoding;
     Language          = new Language(Lang);
 }
Exemplo n.º 7
0
 /// <summary>
 /// New BaseFileFrame
 /// </summary>
 /// <param name="FrameID">FrameID</param>
 /// <param name="Flags">Frame Flags</param>
 /// <param name="Description">Description</param>
 /// <param name="MIMEType">MimeType of Data</param>
 /// <param name="TextEncoding">TextEncoding for texts</param>
 /// <param name="Data">Data of frame</param>
 protected BaseFileFrame(string FrameID, FrameFlags Flags, string Description,
                         string MIMEType, TextEncodings TextEncoding, MemoryStream Data)
     : base(FrameID, Flags)
 {
     _TextEncoding = TextEncoding;
     _MIMEType     = MIMEType;
     _Description  = Description;
     _Data         = Data;
 }
Exemplo n.º 8
0
        /// <summary>
        /// Write specific string to specific MemoryStream
        /// </summary>
        /// <param name="Data">MemoryStream to write text to</param>
        /// <param name="Text">Text to write in MemoryStream</param>
        /// <param name="TEncoding">TextEncoding use for text</param>
        /// <param name="AddNullCharacter">indicate if need to add null characters</param>
        protected void WriteText(MemoryStream Data, string Text, TextEncodings TEncoding, bool AddNullCharacter)
        {
            byte[] Buf, BufTemp;

            BufTemp = FileStreamEx.GetEncoding(TEncoding).GetBytes(Text);

            if (TEncoding == TextEncodings.UTF_16)
            {
                Buf    = new byte[BufTemp.Length + 2];
                Buf[0] = 0xFF;
                Buf[1] = 0xFE;
                for (int i = 0; i < BufTemp.Length; i++)
                {
                    Buf[i + 2] = BufTemp[i];
                }
            }
            else if (TEncoding == TextEncodings.UTF_16BE)
            {
                Buf    = new byte[BufTemp.Length + 2];
                Buf[0] = 0xFE;
                Buf[1] = 0xFF;
                for (int i = 0; i < BufTemp.Length; i++)
                {
                    Buf[i + 2] = BufTemp[i];
                }
            }
            else if (TEncoding == TextEncodings.UTF8)
            {
                Buf = new byte[BufTemp.Length + 3];
                // EF BB BF
                Buf[0] = 0xEF;
                Buf[1] = 0xBB;
                Buf[2] = 0xBF;
                for (int i = 0; i < BufTemp.Length; i++)
                {
                    Buf[i + 3] = BufTemp[i];
                }
            }
            else
            {
                Buf = new byte[BufTemp.Length];
                Buf = BufTemp;
            }



            Data.Write(Buf, 0, Buf.Length);
            if (AddNullCharacter)
            {
                Data.WriteByte(0);
                if (TEncoding == TextEncodings.UTF_16 || TEncoding == TextEncodings.UTF_16BE)
                {
                    Data.WriteByte(0);
                }
            }
        }
Exemplo n.º 9
0
        public void DefaultUnicodeEncodingTest()
        {
            TextEncodings expected = new TextEncodings(); // TODO: Initialize to an appropriate value
            TextEncodings actual;

            ID3v2.DefaultUnicodeEncoding = expected;
            actual = ID3v2.DefaultUnicodeEncoding;
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }
Exemplo n.º 10
0
 /// <summary>
 /// Create new Commercial frame
 /// </summary>
 /// <param name="Flags">Flags of frame</param>
 /// <param name="Description">Description for current frame</param>
 /// <param name="TextEncoding">TextEncoding use for texts</param>
 /// <param name="Price">Price that payed for song</param>
 /// <param name="ValidUntil">Validation date</param>
 /// <param name="ContactURL">Contact URL to seller</param>
 /// <param name="RecievedAs">RecievedAd type</param>
 /// <param name="SellerName">SellerName</param>
 /// <param name="MIMEType">MimeType for seller Logo</param>
 /// <param name="Logo">Data Contain Seller Logo</param>
 public CommercialFrame(FrameFlags Flags, string Description,
                        TextEncodings TextEncoding, Price Price, SDate ValidUntil, string ContactURL,
                        RecievedAsEnum RecievedAs, string SellerName, string MIMEType, MemoryStream Logo)
     : base("COMR", Flags, Description, MIMEType, TextEncoding, Logo)
 {
     _ValidUntil     = ValidUntil;
     this.ContactUrl = ContactURL;
     this.SellerName = SellerName;
     this.RecievedAs = RecievedAs;
     _Price          = Price;
 }
Exemplo n.º 11
0
 /// <summary>
 /// Set TextEncoding according to Data of current frame
 /// </summary>
 private void SetEncoding()
 {
     if (StaticMethods.IsAscii(Text))
     {
         TextEncoding = TextEncodings.Ascii;
     }
     else
     {
         TextEncoding = ID3v2.DefaultUnicodeEncoding;
     }
 }
Exemplo n.º 12
0
        /// <summary>
        /// Create new TextFrame with specific information
        /// </summary>
        /// <param name="Text">Text of TextFrame</param>
        /// <param name="TextEncoding">TextEncoding of TextFrame</param>
        /// <param name="FrameID">FrameID of TextFrame</param>
        /// <param name="Flags">Flags of Frame</param>
        public TextFrame(string FrameID, FrameFlags Flags, string Text, TextEncodings TextEncoding,
                         int Ver)
            : base(FrameID, Flags)
        {
            if (FramesInfo.IsTextFrame(FrameID, Ver) != 1)
            {
                throw (new ArgumentException(FrameID + " is not valid TextFrame FrameID"));
            }

            this.Text         = Text;
            this.TextEncoding = TextEncoding;
        }
Exemplo n.º 13
0
        /// <summary>
        /// New Synchronised Text
        /// </summary>
        /// <param name="Flags">Frame Flags</param>
        /// <param name="TextEncoding">TextEncoding use for texts</param>
        /// <param name="Lang">Language of texts</param>
        /// <param name="TimeStamp">TimeStamps that use for times</param>
        /// <param name="ContentType">ContentType</param>
        /// <param name="ContentDescriptor">Descriptor of Contents</param>
        public SynchronisedText(FrameFlags Flags,
                                TextEncodings TextEncoding, string Lang, TimeStamps TimeStamp,
                                ContentTypes ContentType, string ContentDescriptor, Stream FS)
            : base("SYLT", Flags, FS)
        {
            _Syllables = new FrameCollection <Syllable>("Syllables");

            this.ContentType  = ContentType;
            this.TimeStamp    = TimeStamp;
            this.TextEncoding = TextEncoding;
            Language          = new Language(Lang);
            this.Text         = ContentDescriptor;
        }
Exemplo n.º 14
0
        /// <summary>
        /// Create new UserTextFrame from specific information
        /// </summary>
        /// <param name="FrameID">FrameID of frame</param>
        /// <param name="Flags">Frame flags</param>
        /// <param name="Text">Frame text</param>
        /// <param name="Description">Frame description</param>
        /// <param name="TextEncoding">TextEncoding of texts</param>
        /// <param name="Ver">Minor version of ID3v2</param>
        public UserTextFrame(string FrameID, FrameFlags Flags, string Text,
                             string Description, TextEncodings TextEncoding, int Ver)
            : base(FrameID, Flags)
        {
            if (FramesInfo.IsTextFrame(FrameID, Ver) != 2)
            {
                throw (new ArgumentException(FrameID + " is not valid for UserTextFrame class"));
            }

            this.Text         = Text;
            this.TextEncoding = TextEncoding;
            this.Description  = Description;
        }
Exemplo n.º 15
0
        static Encoding GetEncoding(TextEncodings TEncoding)
        {
            switch (TEncoding)
            {
            case TextEncodings.Utf16:
                return(Encoding.Unicode);

            case TextEncodings.Utf16Be:
                return(Encoding.GetEncoding("UTF-16BE"));

            default:
                return(Encoding.UTF8);
            }
        }
Exemplo n.º 16
0
        public TextWithLanguageFrame(string FrameID, FrameFlags Flags, string Text,
                                     string Description, TextEncodings TextEncoding, string Lang)
            : base(FrameID, Flags)
        {
            if (FrameID != "USLT" && FrameID != "COMM")
            {
                throw (new ArgumentException(FrameID + " is not valid Frame for TextWithLanguageFrame"));
            }

            Language          = new Language(Lang);
            this.Text         = Text;
            this.Description  = "";
            this.TextEncoding = TextEncoding;
        }
Exemplo n.º 17
0
        protected string ReadText(BinaryReader reader, TextEncodings encoding)
        {
            switch (encoding)
            {
                case TextEncodings.Iso55591:
                {
                    var bytes = new ByteBuffer();

                    while (true)
                    {
                        var b = reader.ReadByte();
                        if (b == 0)
                            break;

                        bytes.Add(b);
                    }

                    if (bytes.Length == 0)
                        return string.Empty;

                    return DecodeText(bytes.ToArray(), encoding);
                }
                case TextEncodings.Utf16:
                {
                    var bytes = new ByteBuffer();

                    while (true)
                    {
                        var b = reader.ReadByte();
                        if (b == 0)
                        {
                            var n = reader.ReadByte();

                            if (n == 0)
                                break;

                            bytes.Add(b);
                            bytes.Add(n);
                            break;
                        }

                        bytes.Add(b);
                    }

                    return DecodeText(bytes.ToArray(), encoding);
                }
                default:
                    throw new NotSupportedException();
            }
        }
Exemplo n.º 18
0
        protected byte[] EncodeText(string text, TextEncodings encoding)
        {
            switch (encoding)
            {
                case TextEncodings.Iso55591:
                    return Encoding.GetEncoding(0x6faf).GetBytes(text + "\0");

                case TextEncodings.Utf8:
                    return Encoding.UTF8.GetBytes(text + "\0\0");

                default:
                    throw new NotSupportedException();
            }
        }
Exemplo n.º 19
0
 public static Encoding GetEncoding(TextEncodings TEncoding)
 {
     switch (TEncoding)
     {
         case TextEncodings.UTF_16:
             return Encoding.Unicode;
         case TextEncodings.UTF_16BE:
             return Encoding.GetEncoding("UTF-16BE");
         case TextEncodings.UTF8:
             return Encoding.UTF8;
         default:
             return Encoding.Default;
     }
 }
Exemplo n.º 20
0
 public void WriteText(string Text, TextEncodings TEncoding, bool AddNullCharacter)
 {
     byte[] Buf;
     Buf = StaticMethods.GetEncoding(TEncoding).GetBytes(Text);
     FS.Write(Buf, 0, Buf.Length);
     if (AddNullCharacter)
     {
         FS.WriteByte(0);
         if (TEncoding == TextEncodings.UTF_16 || TEncoding == TextEncodings.UTF_16BE)
         {
             FS.WriteByte(0);
         }
     }
 }
Exemplo n.º 21
0
 /// <summary>
 /// Write specific string to specific MemoryStream
 /// </summary>
 /// <param name="Data">MemoryStream to write text to</param>
 /// <param name="Text">Text to write in MemoryStream</param>
 /// <param name="TEncoding">TextEncoding use for text</param>
 /// <param name="AddNullCharacter">indicate if need to add null characters</param>
 protected void WriteText(MemoryStream Data, string Text, TextEncodings TEncoding, bool AddNullCharacter)
 {
     byte[] Buf;
     Buf = FileStreamEx.GetEncoding(TEncoding).GetBytes(Text);
     Data.Write(Buf, 0, Buf.Length);
     if (AddNullCharacter)
     {
         Data.WriteByte(0);
         if (TEncoding == TextEncodings.UTF_16 || TEncoding == TextEncodings.UTF_16BE)
         {
             Data.WriteByte(0);
         }
     }
 }
Exemplo n.º 22
0
        public static void SaveLrcFile(string path, TextEncodings encoding, string[] lrc)
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            StreamWriter writer = new StreamWriter(path, false, GetEncoding(encoding));
            foreach (string o in lrc)
            {
                writer.WriteLine(o);
            }
            writer.Flush();
            writer.Close();
        }
Exemplo n.º 23
0
 public static Encoding GetEncoding(TextEncodings encording)
 {
     switch (encording)
     {
         case TextEncodings.GBK:
             return Encoding.GetEncoding("GBK");
         case TextEncodings.UTF_16:
             return Encoding.GetEncoding("UTF-16");
         case TextEncodings.UTF_16BE:
             return Encoding.GetEncoding("UTF-16BE");
         case TextEncodings.UTF_8:
             return Encoding.UTF8;
         default:
             return Encoding.Default;
     }
 }
Exemplo n.º 24
0
        public static void SaveLrcFile(string path, TextEncodings encoding, string[] lrc)
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            StreamWriter writer = new StreamWriter(path, false, GetEncoding(encoding));

            foreach (string o in lrc)
            {
                writer.WriteLine(o);
            }
            writer.Flush();
            writer.Close();
        }
Exemplo n.º 25
0
        public static Encoding GetEncoding(TextEncodings TEncoding)
        {
            switch (TEncoding)
            {
            case TextEncodings.UTF_16:
                return(Encoding.Unicode);

            case TextEncodings.UTF_16BE:
                return(Encoding.GetEncoding("UTF-16BE"));

            case TextEncodings.UTF8:
                return(Encoding.UTF8);

            default:
                return(Encoding.Default);
            }
        }
Exemplo n.º 26
0
        /// <summary>
        /// Get System.Text.Encoding according to specified TextEncoding argument
        /// </summary>
        /// <param name="TEncoding">TextEncoding to indicate</param>
        /// <returns>System.Text.Encoding</returns>
        public static Encoding GetEncoding(TextEncodings TEncoding)
        {
            switch (TEncoding)
            {
            case TextEncodings.UTF_16:
                return(Encoding.Unicode);

            case TextEncodings.UTF_16BE:
                return(Encoding.GetEncoding("UTF-16BE"));

            case TextEncodings.UTF8:
                return(Encoding.UTF8);

            default:
                Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
                return(Encoding.GetEncoding("windows-1252"));
            }
        }
Exemplo n.º 27
0
        public static void SaveLrcFile(string path, TextEncodings encoding, string lrc)
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            try
            {
                StreamWriter writer = new StreamWriter(path, false, GetEncoding(encoding));
                writer.WriteLine(lrc);
                writer.Flush();
                writer.Close();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemplo n.º 28
0
        public static void SaveLrcFile(string path, TextEncodings encoding, string lrc)
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            try
            {
                StreamWriter writer = new StreamWriter(path, false, GetEncoding(encoding));
                writer.WriteLine(lrc);
                writer.Flush();
                writer.Close();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemplo n.º 29
0
        public static Encoding GetEncoding(TextEncodings encording)
        {
            switch (encording)
            {
            case TextEncodings.GBK:
                return(Encoding.GetEncoding("GBK"));

            case TextEncodings.UTF_16:
                return(Encoding.GetEncoding("UTF-16"));

            case TextEncodings.UTF_16BE:
                return(Encoding.GetEncoding("UTF-16BE"));

            case TextEncodings.UTF_8:
                return(Encoding.UTF8);

            default:
                return(Encoding.Default);
            }
        }
Exemplo n.º 30
0
        /// <summary>
        /// Get MemoryStream of frame data
        /// </summary>
        /// <returns>MemoryStream of current frame</returns>
        public override MemoryStream FrameStream(int MinorVersion)
        {
            MemoryStream ms = FrameHeader(MinorVersion);

            if (!IsUrl)
            {
                //if (ID3v2.AutoTextEncoding)
                //   SetEncoding();
                TextEncoding = TextEncodings.UTF_16;
                //No Anto Encoding !!!!!!!!!!???????????

                ms.WriteByte((byte)TextEncoding);         // Write Text Encoding
                WriteText(ms, Text, TextEncoding, false); // Write Text
            }
            else
            {
                WriteText(ms, Text, TextEncodings.Ascii, false);
            }

            return(ms);
        }
Exemplo n.º 31
0
 public TermOfUseFrame(FrameFlags Flags, string Text,
     TextEncodings TextEncoding, string Lang)
     : base("USER", Flags)
 {
     this.Text = Text;
     this.TextEncoding = TextEncoding;
     Language = new Language(Lang);
 }
Exemplo n.º 32
0
        /// <summary>
        /// Create new TextFrame with specific information
        /// </summary>
        /// <param name="Text">Text of TextFrame</param>
        /// <param name="TextEncoding">TextEncoding of TextFrame</param>
        /// <param name="FrameID">FrameID of TextFrame</param>
        /// <param name="Flags">Flags of Frame</param>
        public TextFrame(string FrameID, FrameFlags Flags, string Text, TextEncodings TextEncoding,
            int Ver)
            : base(FrameID, Flags)
        {
            if (FramesInfo.IsTextFrame(FrameID, Ver) != 1)
                throw (new ArgumentException(FrameID + " is not valid TextFrame FrameID"));

            this.Text = Text;
            this.TextEncoding = TextEncoding;
        }
Exemplo n.º 33
0
        /// <summary>
        /// Create new UserTextFrame from specific information
        /// </summary>
        /// <param name="FrameID">FrameID of frame</param>
        /// <param name="Flags">Frame flags</param>
        /// <param name="Text">Frame text</param>
        /// <param name="Description">Frame description</param>
        /// <param name="TextEncoding">TextEncoding of texts</param>
        /// <param name="Ver">Minor version of ID3v2</param>
        public UserTextFrame(string FrameID, FrameFlags Flags, string Text,
            string Description, TextEncodings TextEncoding, int Ver)
            : base(FrameID, Flags)
        {
            if (FramesInfo.IsTextFrame(FrameID, Ver) != 2)
                throw (new ArgumentException(FrameID + " is not valid for UserTextFrame class"));

            this.Text = Text;
            this.TextEncoding = TextEncoding;
            this.Description = Description;
        }
Exemplo n.º 34
0
 public OwnershipFrame(FrameFlags Flags, Price PricePayed, SDate PurchDate,
     string Seller, TextEncodings TEncoding)
     : base("OWNE", Flags)
 {
     _Price = PricePayed;
     _DateOfPurch = PurchDate;
     this.Seller = Seller;
 }
Exemplo n.º 35
0
 /// <summary>
 /// Create new GeneralFile frame
 /// </summary>
 /// <param name="Flags">Flags of frame</param>
 /// <param name="Description">Description of frame</param>
 /// <param name="MIMEType">MimeType of file</param>
 /// <param name="TextEncoding">TextEncoding for storing texts</param>
 /// <param name="FileName">Filename</param>
 /// <param name="Data">Data contain file</param>
 public GeneralFileFrame(FrameFlags Flags, string Description,
                         string MIMEType, TextEncodings TextEncoding, string FileName, MemoryStream Data)
     : base("GEOB", Flags, Description, MIMEType, TextEncoding, Data)
 {
     _FileName = FileName;
 }
Exemplo n.º 36
0
        /// <summary>
        /// Write specific string to specific MemoryStream
        /// </summary>
        /// <param name="Data">MemoryStream to write text to</param>
        /// <param name="Text">Text to write in MemoryStream</param>
        /// <param name="TEncoding">TextEncoding use for text</param>
        /// <param name="AddNullCharacter">indicate if need to add null characters</param>
        protected void WriteText(MemoryStream Data, string Text, TextEncodings TEncoding, bool AddNullCharacter)
        {
            byte[] Buf,BufTemp;

            BufTemp = FileStreamEx.GetEncoding(TEncoding).GetBytes(Text);

            if (TEncoding == TextEncodings.UTF_16)
            {
                Buf = new byte[BufTemp.Length + 2];
                Buf[0] = 0xFF;
                Buf[1] = 0xFE;
                for (int i = 0; i < BufTemp.Length; i++)
                    Buf[i + 2] = BufTemp[i];

            }
            else if (TEncoding == TextEncodings.UTF_16BE)
            {
                Buf = new byte[BufTemp.Length + 2];
                Buf[0] = 0xFE;
                Buf[1] = 0xFF;
                for (int i = 0; i < BufTemp.Length; i++)
                    Buf[i + 2] = BufTemp[i];
            }
            else if (TEncoding == TextEncodings.UTF8)
            {

                Buf = new byte[BufTemp.Length + 3];
                // EF BB BF
                Buf[0] = 0xEF;
                Buf[1] = 0xBB;
                Buf[2] = 0xBF;
                for (int i = 0; i < BufTemp.Length; i++)
                    Buf[i + 3] = BufTemp[i];
            }
            else
            {
                Buf = new byte[BufTemp.Length];
                Buf = BufTemp;
            }

            Data.Write(Buf, 0, Buf.Length);
            if (AddNullCharacter)
            {
                Data.WriteByte(0);
                if (TEncoding == TextEncodings.UTF_16 || TEncoding == TextEncodings.UTF_16BE)
                    Data.WriteByte(0);
            }
        }
Exemplo n.º 37
0
        /// <summary>
        /// New Synchronised Text
        /// </summary>
        /// <param name="Flags">Frame Flags</param>
        /// <param name="TextEncoding">TextEncoding use for texts</param>
        /// <param name="Lang">Language of texts</param>
        /// <param name="TimeStamp">TimeStamps that use for times</param>
        /// <param name="ContentType">ContentType</param>
        /// <param name="ContentDescriptor">Descriptor of Contents</param>
        public SynchronisedText(FrameFlags Flags,
            TextEncodings TextEncoding, string Lang, TimeStamps TimeStamp,
            ContentTypes ContentType, string ContentDescriptor)
            : base("SYLT", Flags)
        {
            _Syllables = new FramesCollection<Syllable>();

            this.ContentType = ContentType;
            this.TimeStamp = TimeStamp;
            this.TextEncoding = TextEncoding;
            Language = new Language(Lang);
            this.ContentDescriptor = ContentDescriptor;
        }
Exemplo n.º 38
0
        public string ReadText(int MaxLength, TextEncodings TEncoding, bool DetectEncoding)
        {
            int i = 0;

            return(ReadText(MaxLength, TEncoding, ref i, DetectEncoding));
        }
Exemplo n.º 39
0
 public string ReadText(int MaxLength, TextEncodings TEncoding, bool DetectEncoding)
 {
     int i = 0;
     return ReadText(MaxLength, TEncoding, ref i, DetectEncoding);
 }
Exemplo n.º 40
0
 static Encoding GetEncoding(TextEncodings TEncoding)
 {
     switch (TEncoding)
     {
         case TextEncodings.Utf16:
             return Encoding.Unicode;
         case TextEncodings.Utf16Be:
             return Encoding.GetEncoding("UTF-16BE");
         default:
             return Encoding.UTF8;
     }
 }
Exemplo n.º 41
0
        /// <summary>
        /// Read string from current FileStream
        /// </summary>
        /// <param name="MaxLength">Maximum length that can read from stream</param>
        /// <param name="TEncoding">TextEcoding to read from Stream</param>
        /// <param name="DetectEncoding">Can method recognize encoding of text from Encoding inicators</param>
        /// <returns>string readed from current FileStream</returns>
        public string ReadText(int MaxLength, TextEncodings TEncoding, ref int ReadedLength, bool DetectEncoding)
        {
            if (MaxLength <= 0)
                return "";
            long Pos = base.Position;

            MemoryStream MStream = new MemoryStream();
            if (DetectEncoding && MaxLength >= 3)
            {
                byte[] Buffer = new byte[3];
                base.Read(Buffer, 0, Buffer.Length);
                if (Buffer[0] == 0xFF && Buffer[1] == 0xFE)
                {   // FF FE
                    TEncoding = TextEncodings.UTF_16;// UTF-16 (LE)
                    base.Position--;
                    MaxLength -= 2;
                }
                else if (Buffer[0] == 0xFE && Buffer[1] == 0xFF)
                {   // FE FF
                    TEncoding = TextEncodings.UTF_16BE;
                    base.Position--;
                    MaxLength -= 2;
                }
                else if (Buffer[0] == 0xEF && Buffer[1] == 0xBB && Buffer[2] == 0xBF)
                {
                    // EF BB BF
                    TEncoding = TextEncodings.UTF8;
                    MaxLength -= 3;
                }
                else
                    base.Position -= 3;
            }
            bool Is2ByteSeprator = (TEncoding == TextEncodings.UTF_16 || TEncoding == TextEncodings.UTF_16BE);

            byte Buf;
            while (MaxLength > 0)
            {
                Buf = ReadByte(); // Read First/Next byte from stream

                if (Buf != 0) // if it's data byte
                    MStream.WriteByte(Buf);
                else // if Buf == 0
                {
                    if (Is2ByteSeprator)
                    {
                        byte Temp = ReadByte();
                        if (Temp == 0)
                            break;
                        else
                        {
                            MStream.WriteByte(Buf);
                            MStream.WriteByte(Temp);
                            MaxLength--;
                        }
                    }
                    else
                        break;
                }
                MaxLength--;
            }

            if (MaxLength < 0)
                base.Position += MaxLength;

            ReadedLength -= Convert.ToInt32(base.Position - Pos);

            return GetEncoding(TEncoding).GetString(MStream.ToArray());
        }
Exemplo n.º 42
0
 /// <summary>
 /// Create new GeneralFile frame
 /// </summary>
 /// <param name="Flags">Flags of frame</param>
 /// <param name="Description">Description of frame</param>
 /// <param name="MIMEType">MimeType of file</param>
 /// <param name="TextEncoding">TextEncoding for storing texts</param>
 /// <param name="FileName">Filename</param>
 /// <param name="Data">Data contain file</param>
 public GeneralFileFrame(FrameFlags Flags, string Description,
     string MIMEType, TextEncodings TextEncoding, string FileName, MemoryStream Data)
     : base("GEOB", Flags, Description, MIMEType, TextEncoding, Data)
 {
     _FileName = FileName;
 }
Exemplo n.º 43
0
        public string ReadText(int MaxLength, TextEncodings TEncoding)
        {
            int i = 0;

            return(ReadText(MaxLength, TEncoding, ref i, true));
        }
Exemplo n.º 44
0
        public TextWithLanguageFrame(string FrameID, FrameFlags Flags, string Text,
            string Description, TextEncodings TextEncoding, string Lang)
            : base(FrameID, Flags)
        {
            if (FrameID != "USLT" && FrameID != "COMM")
                throw (new ArgumentException(FrameID + " is not valid Frame for TextWithLanguageFrame"));

            Language = new Language(Lang);
            this.Text = Text;
            this.Description = "";
            this.TextEncoding = TextEncoding;
        }
Exemplo n.º 45
0
        string ReadText(int MaxLength, TextEncodings TEncoding)
        {
            var i = 0;

            return(ReadText(MaxLength, TEncoding, ref i, false));
        }
Exemplo n.º 46
0
        /// <summary>
        /// Read string from current FileStream
        /// </summary>
        /// <param name="MaxLength">Maximum length that can read from stream</param>
        /// <param name="TEncoding">TextEcoding to read from Stream</param>
        /// <param name="DetectEncoding">Can method recognize encoding of text from Encoding inicators</param>
        /// <returns>string readed from current FileStream</returns>
        public string ReadText(int MaxLength, TextEncodings TEncoding, ref int ReadedLength, bool DetectEncoding)
        {
            if (MaxLength <= 0)
            {
                return("");
            }
            long Pos = base.Position;

            MemoryStream MStream = new MemoryStream();

            if (DetectEncoding && MaxLength >= 3)
            {
                byte[] Buffer = new byte[3];
                base.Read(Buffer, 0, Buffer.Length);
                if (Buffer[0] == 0xFF && Buffer[1] == 0xFE)
                {                                     // FF FE
                    TEncoding = TextEncodings.UTF_16; // UTF-16 (LE)
                    base.Position--;
                    MaxLength -= 2;
                }
                else if (Buffer[0] == 0xFE && Buffer[1] == 0xFF)
                {   // FE FF
                    TEncoding = TextEncodings.UTF_16BE;
                    base.Position--;
                    MaxLength -= 2;
                }
                else if (Buffer[0] == 0xEF && Buffer[1] == 0xBB && Buffer[2] == 0xBF)
                {
                    // EF BB BF
                    TEncoding  = TextEncodings.UTF8;
                    MaxLength -= 3;
                }
                else
                {
                    base.Position -= 3;
                }
            }
            bool Is2ByteSeprator = (TEncoding == TextEncodings.UTF_16 || TEncoding == TextEncodings.UTF_16BE);

            byte Buf;

            while (MaxLength > 0)
            {
                Buf = ReadByte(); // Read First/Next byte from stream
                if (Buf != 0)     // if it's data byte
                {
                    MStream.WriteByte(Buf);
                }
                else // if Buf == 0
                {
                    if (Is2ByteSeprator)
                    {
                        MStream.WriteByte(Buf);

                        /*byte Temp = ReadByte();
                         * if (Temp == 0)
                         * {
                         *  if (MStream.Length % 2 == 1)
                         *      MStream.WriteByte(Temp);
                         *  break;
                         * }
                         * else
                         * {
                         *  MStream.WriteByte(Buf);
                         *  MStream.WriteByte(Temp);
                         *  MaxLength--;
                         * }*/
                    }
                    else
                    {
                        break;
                    }
                }
                MaxLength--;
            }

            if (MaxLength < 0)
            {
                base.Position += MaxLength;
            }

            ReadedLength -= Convert.ToInt32(base.Position - Pos);

            return(GetEncoding(TEncoding).GetString(MStream.ToArray()));
        }
Exemplo n.º 47
0
        public string ReadText(int MaxLength, TextEncodings TEncoding, ref int ReadedLength, bool DetectEncoding)
        {
            if (MaxLength <= 0)
            {
                return("");
            }
            long Pos = this.FS.Position; // store current position

            MemoryBlockStream MStream = new MemoryBlockStream();

            if (DetectEncoding && MaxLength >= 3)
            {
                byte[] Buffer = new byte[3];
                FS.Read(Buffer, 0, Buffer.Length);
                if (Buffer[0] == 0xFF && Buffer[1] == 0xFE)
                {                                     // FF FE
                    TEncoding = TextEncodings.UTF_16; // UTF-16 (LE)
                    this.FS.Position--;
                    MaxLength -= 2;
                }
                else if (Buffer[0] == 0xFE && Buffer[1] == 0xFF)
                {   // FE FF
                    TEncoding = TextEncodings.UTF_16BE;
                    this.FS.Position--;
                    MaxLength -= 2;
                }
                else if (Buffer[0] == 0xEF && Buffer[1] == 0xBB && Buffer[2] == 0xBF)
                {
                    // EF BB BF
                    TEncoding  = TextEncodings.UTF8;
                    MaxLength -= 3;
                }
                else
                {
                    this.FS.Position -= 3;
                }
            }
            // Indicate text seprator type for current string encoding
            bool Is2ByteSeprator = (TEncoding == TextEncodings.UTF_16 || TEncoding == TextEncodings.UTF_16BE);

            byte Buf, Buf2;

            while (MaxLength > 0)
            {
                if (Is2ByteSeprator)
                {
                    Buf  = ReadByte(FS);
                    Buf2 = ReadByte(FS);

                    if (Buf == 0 && Buf2 == 0)
                    {
                        break;
                    }
                    else
                    {
                        MStream.WriteByte(Buf);
                        MStream.WriteByte(Buf2);
                    }

                    MaxLength--;
                }
                else
                {
                    Buf = ReadByte(FS); // Read First/Next byte from stream

                    if (Buf == 0)
                    {
                        break;
                    }
                    else
                    {
                        MStream.WriteByte(Buf);
                    }
                }

                MaxLength--;
            }

            if (MaxLength < 0)
            {
                this.FS.Position += MaxLength;
            }

            ReadedLength -= Convert.ToInt32(this.FS.Position - Pos);

            return(StaticMethods.GetEncoding(TEncoding).GetString(MStream.ToArray()));
        }
Exemplo n.º 48
0
        string ReadText(int MaxLength, TextEncodings TEncoding, ref int ReadedLength, bool DetectEncoding)
        {
            if (MaxLength <= 0)
            {
                return("");
            }

            var bytesRead = 0;

            using (var mStream = new MemoryStream())
            {
                if (DetectEncoding && MaxLength >= 3)
                {
                    var buffer = new byte[3];

                    Read(buffer, 0, buffer.Length);

                    if (buffer[0] == 0xFF && buffer[1] == 0xFE)
                    {
                        // FF FE
                        TEncoding  = TextEncodings.Utf16; // UTF-16 (LE)
                        _ptr      -= 1;
                        bytesRead += 1;
                        MaxLength -= 2;
                    }

                    else if (buffer[0] == 0xFE && buffer[1] == 0xFF)
                    {
                        // FE FF
                        TEncoding  = TextEncodings.Utf16Be;
                        _ptr      -= 1;
                        bytesRead += 1;
                        MaxLength -= 2;
                    }

                    else if (buffer[0] == 0xEF && buffer[1] == 0xBB && buffer[2] == 0xBF)
                    {
                        // EF BB BF
                        TEncoding  = TextEncodings.Utf8;
                        MaxLength -= 3;
                    }
                    {
                        _ptr      -= 3;
                        bytesRead += 3;
                    }
                }

                var is2ByteSeprator = TEncoding == TextEncodings.Utf16 || TEncoding == TextEncodings.Utf16Be;

                while (MaxLength > 0)
                {
                    var buf = ReadByte();

                    if (buf != 0) // if it's data byte
                    {
                        mStream.WriteByte(buf);
                    }

                    else // if Buf == 0
                    {
                        if (is2ByteSeprator)
                        {
                            var temp = ReadByte();

                            if (temp == 0)
                            {
                                break;
                            }

                            mStream.WriteByte(buf);
                            mStream.WriteByte(temp);
                            MaxLength--;
                        }
                        else
                        {
                            break;
                        }
                    }

                    MaxLength--;
                }

                if (MaxLength < 0)
                {
                    _ptr += MaxLength;
                }

                ReadedLength -= bytesRead;

                return(GetEncoding(TEncoding).GetString(mStream.ToArray(), 0, (int)mStream.Length));
            }
        }
Exemplo n.º 49
0
 /// <summary>
 /// Create new Commercial frame
 /// </summary>
 /// <param name="Flags">Flags of frame</param>
 /// <param name="Description">Description for current frame</param>
 /// <param name="TextEncoding">TextEncoding use for texts</param>
 /// <param name="Price">Price that payed for song</param>
 /// <param name="ValidUntil">Validation date</param>
 /// <param name="ContactURL">Contact URL to seller</param>
 /// <param name="RecievedAs">RecievedAd type</param>
 /// <param name="SellerName">SellerName</param>
 /// <param name="MIMEType">MimeType for seller Logo</param>
 /// <param name="Logo">Data Contain Seller Logo</param>
 public CommercialFrame(FrameFlags Flags, string Description,
     TextEncodings TextEncoding, Price Price , SDate ValidUntil, string ContactURL,
     RecievedAsEnum RecievedAs, string SellerName, string MIMEType, MemoryStream Logo)
     : base("COMR", Flags, Description, MIMEType, TextEncoding, Logo)
 {
     _ValidUntil = ValidUntil;
     this.ContactUrl = ContactURL;
     this.SellerName = SellerName;
     this.RecievedAs = RecievedAs;
     _Price = Price;
 }
Exemplo n.º 50
0
 public string ReadText(int MaxLength, TextEncodings TEncoding)
 {
     int i = 0;
     return ReadText(MaxLength, TEncoding, ref i, true);
 }
Exemplo n.º 51
0
        /// <summary>
        /// Get length of Specific string according to Encoding
        /// </summary>
        /// <param name="Text">Text to get length</param>
        /// <param name="TEncoding">TextEncoding to use for Length calculation</param>
        /// <returns>Length of text</returns>
        protected static int GetTextLength(string Text, TextEncodings TEncoding, bool AddNullCharacter)
        {
            int StringLength;

            StringLength = Text.Length;
            if (TEncoding == TextEncodings.UTF_16 || TEncoding == TextEncodings.UTF_16BE)
                StringLength *= 2; // in UTF-16 each character is 2 bytes

            if (AddNullCharacter)
            {
                if (TEncoding == TextEncodings.UTF_16 || TEncoding == TextEncodings.UTF_16BE)
                    StringLength += 2;
                else
                    StringLength++;
            }

            return StringLength;
        }
Exemplo n.º 52
0
 /// <summary>
 /// New BaseFileFrame
 /// </summary>
 /// <param name="FrameID">FrameID</param>
 /// <param name="Flags">Frame Flags</param>
 /// <param name="Description">Description</param>
 /// <param name="MIMEType">MimeType of Data</param>
 /// <param name="TextEncoding">TextEncoding for texts</param>
 /// <param name="Data">Data of frame</param>
 protected BaseFileFrame(string FrameID, FrameFlags Flags, string Description,
     string MIMEType, TextEncodings TextEncoding, MemoryStream Data)
     : base(FrameID, Flags)
 {
     _TextEncoding = TextEncoding;
     _MIMEType = MIMEType;
     _Description = Description;
     _Data = Data;
 }
Exemplo n.º 53
0
 /// <summary>
 /// Write specific string to specific MemoryStream
 /// </summary>
 /// <param name="Data">MemoryStream to write text to</param>
 /// <param name="Text">Text to write in MemoryStream</param>
 /// <param name="TEncoding">TextEncoding use for text</param>
 /// <param name="AddNullCharacter">indicate if need to add null characters</param>
 protected void WriteText(MemoryStream Data, string Text, TextEncodings TEncoding, bool AddNullCharacter)
 {
     byte[] Buf;
     Buf = FileStreamEx.GetEncoding(TEncoding).GetBytes(Text);
     Data.Write(Buf, 0, Buf.Length);
     if (AddNullCharacter)
     {
         Data.WriteByte(0);
         if (TEncoding == TextEncodings.UTF_16 || TEncoding == TextEncodings.UTF_16BE)
             Data.WriteByte(0);
     }
 }