iTextSharp.text.pdf.codec.CCITTG4Encoder.Fax3Encode2DRow C# (CSharp) Méthode

Fax3Encode2DRow() private méthode

private Fax3Encode2DRow ( ) : void
Résultat void
        private void Fax3Encode2DRow()
        {
            int a0 = 0;
            int a1 = (Pixel(dataBp, offsetData, 0) != 0 ? 0 : Finddiff(dataBp, offsetData, 0, rowpixels, 0));
            int b1 = (Pixel(refline, 0, 0) != 0 ? 0 : Finddiff(refline, 0, 0, rowpixels, 0));
            int a2, b2;

            for (;;) {
                b2 = Finddiff2(refline, 0, b1, rowpixels, Pixel(refline, 0,b1));
                if (b2 >= a1) {
                    int d = b1 - a1;
                    if (!(-3 <= d && d <= 3)) { /* horizontal mode */
                        a2 = Finddiff2(dataBp, offsetData, a1, rowpixels, Pixel(dataBp, offsetData,a1));
                        Putcode(horizcode);
                        if (a0+a1 == 0 || Pixel(dataBp, offsetData, a0) == 0) {
                            Putspan(a1-a0, TIFFFaxWhiteCodes);
                            Putspan(a2-a1, TIFFFaxBlackCodes);
                        } else {
                            Putspan(a1-a0, TIFFFaxBlackCodes);
                            Putspan(a2-a1, TIFFFaxWhiteCodes);
                        }
                        a0 = a2;
                    } else {            /* vertical mode */
                        Putcode(vcodes[d+3]);
                        a0 = a1;
                    }
                } else {                /* pass mode */
                    Putcode(passcode);
                    a0 = b2;
                }
                if (a0 >= rowpixels)
                    break;
                a1 = Finddiff(dataBp, offsetData, a0, rowpixels, Pixel(dataBp, offsetData,a0));
                b1 = Finddiff(refline, 0, a0, rowpixels, Pixel(dataBp, offsetData,a0) ^ 1);
                b1 = Finddiff(refline, 0, b1, rowpixels, Pixel(dataBp, offsetData,a0));
            }
        }