iTextSharp.text.pdf.PdfEncodings.EncodeStream C# (CSharp) Метод

EncodeStream() статический приватный Метод

static private EncodeStream ( Stream inp, ArrayList planes ) : void
inp Stream
planes System.Collections.ArrayList
Результат void
    internal static void EncodeStream(Stream inp, ArrayList planes) {
        StreamReader rd = new StreamReader(inp, Encoding.ASCII);
        String line = null;
        int state = CIDNONE;
        byte[] seqs = new byte[7];
        while ((line = rd.ReadLine()) != null) {
            if (line.Length < 6)
                continue;
            switch (state) {
                case CIDNONE: {
                    if (line.IndexOf("begincidrange") >= 0)
                        state = CIDRANGE;
                    else if (line.IndexOf("begincidchar") >= 0)
                        state = CIDCHAR;
                    else if (line.IndexOf("usecmap") >= 0) {
                        StringTokenizer tk = new StringTokenizer(line);
                        String t = tk.NextToken();
                        ReadCmap(t.Substring(1), planes);
                    }
                    break;
                }
                case CIDRANGE: {
                    if (line.IndexOf("endcidrange") >= 0) {
                        state = CIDNONE;
                        break;
                    }
                    StringTokenizer tk = new StringTokenizer(line);
                    String t = tk.NextToken();
                    int size = t.Length / 2 - 1;
                    long start = long.Parse(t.Substring(1, t.Length - 2), NumberStyles.HexNumber);
                    t = tk.NextToken();
                    long end = long.Parse(t.Substring(1, t.Length - 2), NumberStyles.HexNumber);
                    t = tk.NextToken();
                    int cid = int.Parse(t);
                    for (long k = start; k <= end; ++k) {
                        BreakLong(k, size, seqs);
                        EncodeSequence(size, seqs, (char)cid, planes);
                        ++cid;
                    }
                    break;
                }
                case CIDCHAR: {
                    if (line.IndexOf("endcidchar") >= 0) {
                        state = CIDNONE;
                        break;
                    }
                    StringTokenizer tk = new StringTokenizer(line);
                    String t = tk.NextToken();
                    int size = t.Length / 2 - 1;
                    long start = long.Parse(t.Substring(1, t.Length - 2), NumberStyles.HexNumber);
                    t = tk.NextToken();
                    int cid = int.Parse(t);
                    BreakLong(start, size, seqs);
                    EncodeSequence(size, seqs, (char)cid, planes);
                    break;
                }
            }
        }
    }