iTextSharp.text.pdf.BarcodeDatamatrix.GetEncodation C# (CSharp) Метод

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

private static GetEncodation ( byte text, int textOffset, int textSize, byte data, int dataOffset, int dataSize, int options, bool firstMatch ) : int
text byte
textOffset int
textSize int
data byte
dataOffset int
dataSize int
options int
firstMatch bool
Результат int
        private static int GetEncodation(byte[] text, int textOffset, int textSize, byte[] data, int dataOffset, int dataSize, int options, bool firstMatch) {
            int e, j, k;
            int[] e1 = new int[6];
            if (dataSize < 0)
                return -1;
            e = -1;
            options &= 7;
            if (options == 0) {
                e1[0] = AsciiEncodation(text, textOffset, textSize, data, dataOffset, dataSize);
                if (firstMatch && e1[0] >= 0)
                    return e1[0];
                e1[1] = C40OrTextEncodation(text, textOffset, textSize, data, dataOffset, dataSize, false);
                if (firstMatch && e1[1] >= 0)
                    return e1[1];
                e1[2] = C40OrTextEncodation(text, textOffset, textSize, data, dataOffset, dataSize, true);
                if (firstMatch && e1[2] >= 0)
                    return e1[2];
                e1[3] = B256Encodation(text, textOffset, textSize, data, dataOffset, dataSize);
                if (firstMatch && e1[3] >= 0)
                    return e1[3];
                e1[4] = X12Encodation(text, textOffset, textSize, data, dataOffset, dataSize);
                if (firstMatch && e1[4] >= 0)
                    return e1[4];
                e1[5] = EdifactEncodation(text, textOffset, textSize, data, dataOffset, dataSize);
                if (firstMatch && e1[5] >= 0)
                    return e1[5];
                if (e1[0] < 0 && e1[1] < 0 && e1[2] < 0 && e1[3] < 0 && e1[4] < 0 && e1[5] < 0) {
                    return -1;
                }
                j = 0;
                e = 99999;
                for (k = 0; k < 6; ++k) {
                    if (e1[k] >= 0 && e1[k] < e) {
                        e = e1[k];
                        j = k;
                    }
                }
                if (j == 0)
                    e = AsciiEncodation(text, textOffset, textSize, data, dataOffset, dataSize);
                else if (j == 1)
                    e = C40OrTextEncodation(text, textOffset, textSize, data, dataOffset, dataSize, false);
                else if (j == 2)
                    e = C40OrTextEncodation(text, textOffset, textSize, data, dataOffset, dataSize, true);
                else if (j == 3)
                    e = B256Encodation(text, textOffset, textSize, data, dataOffset, dataSize);
                else if (j == 4)
                    e = X12Encodation(text, textOffset, textSize, data, dataOffset, dataSize);
                return e;
            }
            switch (options) {
            case DM_ASCII:
                return AsciiEncodation(text, textOffset, textSize, data, dataOffset, dataSize);
            case DM_C40:
                return C40OrTextEncodation(text, textOffset, textSize, data, dataOffset, dataSize, true);
            case DM_TEXT:
                return C40OrTextEncodation(text, textOffset, textSize, data, dataOffset, dataSize, false);
            case DM_B256:
                return B256Encodation(text, textOffset, textSize, data, dataOffset, dataSize);
            case DM_X21:
                return X12Encodation(text, textOffset, textSize, data, dataOffset, dataSize);
            case DM_EDIFACT:
                return EdifactEncodation(text, textOffset, textSize, data, dataOffset, dataSize);
            case DM_RAW:
                if (textSize > dataSize)
                    return -1;
                System.Array.Copy(text, textOffset, data, dataOffset, textSize);
                return textSize;
            }
            return -1;
        }