FastColoredTextBoxNS.FileTextSource.OpenFile C# (CSharp) Method

OpenFile() public method

public OpenFile ( string fileName, Encoding enc ) : void
fileName string
enc System.Text.Encoding
return void
        public void OpenFile(string fileName, Encoding enc)
        {
            Clear();

            if (fs != null)
                fs.Dispose();

            SaveEOL = Environment.NewLine;

            //read lines of file
            fs = new FileStream(fileName, FileMode.Open);
            var length = fs.Length;
            //read signature
            enc = DefineEncoding(enc, fs);
            int shift = DefineShift(enc);
            //first line
            sourceFileLinePositions.Add((int)fs.Position);
            base.lines.Add(null);
            //other lines
            int prev = 0;
            while (fs.Position < length)
            {
                var b = fs.ReadByte();

                if (b == 10)// \n
                {
                    sourceFileLinePositions.Add((int)(fs.Position) + shift);
                    base.lines.Add(null);
                }
                else
                    if (prev == 13)// \r (Mac format)
                    {
                        sourceFileLinePositions.Add((int)(fs.Position - 1) + shift);
                        base.lines.Add(null);
                        SaveEOL = "\r";
                    }

                prev = b;
            }

            if (prev == 13)
            {
                sourceFileLinePositions.Add((int)(fs.Position) + shift);
                base.lines.Add(null);
            }

            Line[] temp = new Line[100];
            var c = base.lines.Count;
            base.lines.AddRange(temp);
            base.lines.TrimExcess();
            base.lines.RemoveRange(c, temp.Length);

            int[] temp2 = new int[100];
            c = base.lines.Count;
            sourceFileLinePositions.AddRange(temp2);
            sourceFileLinePositions.TrimExcess();
            sourceFileLinePositions.RemoveRange(c, temp.Length);

            fileEncoding = enc;

            OnLineInserted(0, Count);
            //load first lines for calc width of the text
            var linesCount = Math.Min(lines.Count, CurrentTB.ClientRectangle.Height / CurrentTB.CharHeight);
            for (int i = 0; i < linesCount; i++)
                LoadLineFromSourceFile(i);
            //
            NeedRecalc(new TextChangedEventArgs(0, linesCount - 1));
            if (CurrentTB.WordWrap)
                OnRecalcWordWrap(new TextChangedEventArgs(0, linesCount - 1));
        }