FastColoredTextBoxNS.FileTextSource.DefineEncoding C# (CSharp) Method

DefineEncoding() private static method

private static DefineEncoding ( Encoding enc, FileStream fs ) : Encoding
enc System.Text.Encoding
fs System.IO.FileStream
return System.Text.Encoding
        private static Encoding DefineEncoding(Encoding enc, FileStream fs)
        {
            int bytesPerSignature = 0;
            byte[] signature = new byte[4];
            int c = fs.Read(signature, 0, 4);
            if (signature[0] == 0xFF && signature[1] == 0xFE && signature[2] == 0x00 && signature[3] == 0x00 && c >= 4)
            {
                enc = Encoding.UTF32;//UTF32 LE
                bytesPerSignature = 4;
            }
            else
                if (signature[0] == 0x00 && signature[1] == 0x00 && signature[2] == 0xFE && signature[3] == 0xFF)
                {
                    enc = new UTF32Encoding(true, true);//UTF32 BE
                    bytesPerSignature = 4;
                }
                else
                    if (signature[0] == 0xEF && signature[1] == 0xBB && signature[2] == 0xBF)
                    {
                        enc = Encoding.UTF8;//UTF8
                        bytesPerSignature = 3;
                    }
                    else
                        if (signature[0] == 0xFE && signature[1] == 0xFF)
                        {
                            enc = Encoding.BigEndianUnicode;//UTF16 BE
                            bytesPerSignature = 2;
                        }
                        else
                            if (signature[0] == 0xFF && signature[1] == 0xFE)
                            {
                                enc = Encoding.Unicode;//UTF16 LE
                                bytesPerSignature = 2;
                            }

            fs.Seek(bytesPerSignature, SeekOrigin.Begin);

            return enc;
        }