iTextSharp.text.pdf.codec.CCITTG4Encoder.Find1span C# (CSharp) Метод

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

private static Find1span ( byte bp, int offset, int bs, int be ) : int
bp byte
offset int
bs int
be int
Результат int
        private static int Find1span(byte[] bp, int offset, int bs, int be)
        {
            int bits = be - bs;
            int n, span;

            int pos = offset + (bs >> 3);
            /*
            * Check partial byte on lhs.
            */
            if (bits > 0 && (n = (bs & 7)) != 0) {
                span = oneruns[((int)bp[pos] << n) & 0xff];
                if (span > 8-n)     /* table value too generous */
                    span = 8-n;
                if (span > bits)    /* constrain span to bit range */
                    span = bits;
                if (n+span < 8)     /* doesn't extend to edge of byte */
                    return (span);
                bits -= span;
                pos++;
            } else
                span = 0;
            /*
            * Scan full bytes for all 1's.
            */
            while (bits >= 8) {
                if (bp[pos] != 0xff)  /* end of run */
                    return (span + oneruns[bp[pos] & 0xff]);
                span += 8;
                bits -= 8;
                pos++;
            }
            /*
            * Check partial byte on rhs.
            */
            if (bits > 0) {
                n = oneruns[bp[pos] & 0xff];
                span += (n > bits ? bits : n);
            }
            return (span);
        }