iTextSharp.text.pdf.CFFFont.GetDictItem C# (CSharp) Метод

GetDictItem() защищенный Метод

protected GetDictItem ( ) : void
Результат void
        protected void GetDictItem() {
            for (int i=0; i<arg_count; i++) args[i]=null;
            arg_count = 0;
            key = null;
            bool gotKey = false;
            
            while (!gotKey) {
                char b0 = GetCard8();
                if (b0 == 29) {
                    int item = GetInt();
                    args[arg_count] = item;
                    arg_count++;
                    //System.err.Println(item+" ");
                    continue;
                }
                if (b0 == 28) {
                    short item = GetShort();
                    args[arg_count] = (int)item;
                    arg_count++;
                    //System.err.Println(item+" ");
                    continue;
                }
                if (b0 >= 32 && b0 <= 246) {
                    sbyte item = (sbyte) ((int)b0-139);
                    args[arg_count] = (int)item;
                    arg_count++;
                    //System.err.Println(item+" ");
                    continue;
                }
                if (b0 >= 247 && b0 <= 250) {
                    char b1 = GetCard8();
                    short item = (short) (((int)b0-247)*256+(int)b1+108);
                    args[arg_count] = (int)item;
                    arg_count++;
                    //System.err.Println(item+" ");
                    continue;
                }
                if (b0 >= 251 && b0 <= 254) {
                    char b1 = GetCard8();
                    short item = (short) (-((int)b0-251)*256-(int)b1-108);
                    args[arg_count] = (int)item;
                    arg_count++;
                    //System.err.Println(item+" ");
                    continue;
                }
                if (b0 == 30) {
                    StringBuilder item = new StringBuilder();
                    bool done = false;
                    char buffer = (char)0;
                    byte avail = 0;
                    int  nibble = 0;
                    while (!done) {
                        // get a nibble
                        if (avail==0) { buffer = GetCard8(); avail=2; }
                        if (avail==1) { nibble = (buffer / 16); avail--; }
                        if (avail==2) { nibble = (buffer % 16); avail--; }
                        switch (nibble) {
                            case 0xa: item.Append(".") ; break;
                            case 0xb: item.Append("E") ; break;
                            case 0xc: item.Append("E-"); break;
                            case 0xe: item.Append("-") ; break;
                            case 0xf: done=true   ; break;
                            default:
                                if (nibble >= 0 && nibble <= 9)
                                    item.Append(nibble.ToString());
                                else {
                                    item.Append("<NIBBLE ERROR: "+nibble.ToString()+">");
                                    done = true;
                                }
                                break;
                        }
                    }
                    args[arg_count] = item.ToString();
                    arg_count++;
                    //System.err.Println(" real=["+item+"]");
                    continue;
                }
                if (b0 <= 21) {
                    gotKey=true;
                    if (b0 != 12) key = operatorNames[b0];
                    else key = operatorNames[32 + GetCard8()];
                    //for (int i=0; i<arg_count; i++)
                    //  System.err.Print(args[i].ToString()+" ");
                    //System.err.Println(key+" ;");
                    continue;
                }
            }
        }