// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: braces fieldsfirst space lnc 

package com.google.zxing.qrcode.detector;

import com.google.zxing.NotFoundException;
import com.google.zxing.ResultPointCallback;
import com.google.zxing.common.BitMatrix;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

// Referenced classes of package com.google.zxing.qrcode.detector:
//            AlignmentPattern

final class a
{

    private final BitMatrix a;
    private final List b = new ArrayList(5);
    private final int c;
    private final int d;
    private final int e;
    private final int f;
    private final float g;
    private final int h[] = new int[3];
    private final ResultPointCallback i;

    a(BitMatrix bitmatrix, int j, int k, int l, int i1, float f1, ResultPointCallback resultpointcallback)
    {
        a = bitmatrix;
        c = j;
        d = k;
        e = l;
        f = i1;
        g = f1;
        i = resultpointcallback;
    }

    private float a(int j, int k, int l, int i1)
    {
        BitMatrix bitmatrix = a;
        int j1 = bitmatrix.getHeight();
        int ai[] = h;
        ai[0] = 0;
        ai[1] = 0;
        ai[2] = 0;
        int k1;
        for (k1 = j; k1 >= 0 && bitmatrix.get(k, k1) && ai[1] <= l; k1--)
        {
            ai[1] = 1 + ai[1];
        }

        if (k1 >= 0 && ai[1] <= l)
        {
            for (; k1 >= 0 && !bitmatrix.get(k, k1) && ai[0] <= l; k1--)
            {
                ai[0] = 1 + ai[0];
            }

            if (ai[0] <= l)
            {
                int l1;
                for (l1 = j + 1; l1 < j1 && bitmatrix.get(k, l1) && ai[1] <= l; l1++)
                {
                    ai[1] = 1 + ai[1];
                }

                if (l1 != j1 && ai[1] <= l)
                {
                    for (; l1 < j1 && !bitmatrix.get(k, l1) && ai[2] <= l; l1++)
                    {
                        ai[2] = 1 + ai[2];
                    }

                    if (ai[2] <= l && 5 * Math.abs((ai[0] + ai[1] + ai[2]) - i1) < i1 * 2 && a(ai))
                    {
                        return a(ai, l1);
                    }
                }
            }
        }
        return (0.0F / 0.0F);
    }

    private static float a(int ai[], int j)
    {
        return (float)(j - ai[2]) - (float)ai[1] / 2.0F;
    }

    private AlignmentPattern a(int ai[], int j, int k)
    {
        int l = ai[0] + ai[1] + ai[2];
        float f1 = a(ai, k);
        float f2 = a(j, (int)f1, 2 * ai[1], l);
        if (!Float.isNaN(f2))
        {
            float f3 = (float)(ai[0] + ai[1] + ai[2]) / 3F;
            for (Iterator iterator = b.iterator(); iterator.hasNext();)
            {
                AlignmentPattern alignmentpattern1 = (AlignmentPattern)iterator.next();
                if (alignmentpattern1.a(f3, f2, f1))
                {
                    return alignmentpattern1.b(f2, f1, f3);
                }
            }

            AlignmentPattern alignmentpattern = new AlignmentPattern(f1, f2, f3);
            b.add(alignmentpattern);
            if (i != null)
            {
                i.foundPossibleResultPoint(alignmentpattern);
            }
        }
        return null;
    }

    private boolean a(int ai[])
    {
        float f1 = g;
        float f2 = f1 / 2.0F;
        for (int j = 0; j < 3; j++)
        {
            if (Math.abs(f1 - (float)ai[j]) >= f2)
            {
                return false;
            }
        }

        return true;
    }

    AlignmentPattern a()
    {
        int j;
        int k;
        int l;
        int i1;
        int ai[];
        int j1;
        j = c;
        k = f;
        l = j + e;
        i1 = d + (k >> 1);
        ai = new int[3];
        j1 = 0;
_L17:
        if (j1 >= k) goto _L2; else goto _L1
_L1:
        int l1;
        int j2;
        int k2;
        int k1;
        int i2;
        if ((j1 & 1) == 0)
        {
            k1 = j1 + 1 >> 1;
        } else
        {
            k1 = -(j1 + 1 >> 1);
        }
        l1 = i1 + k1;
        ai[0] = 0;
        ai[1] = 0;
        ai[2] = 0;
        for (i2 = j; i2 < l && !a.get(i2, l1); i2++) { }
        j2 = i2;
        k2 = 0;
_L9:
        if (j2 >= l) goto _L4; else goto _L3
_L3:
        if (!a.get(j2, l1)) goto _L6; else goto _L5
_L5:
        if (k2 != 1) goto _L8; else goto _L7
_L7:
        ai[k2] = 1 + ai[k2];
_L15:
        j2++;
          goto _L9
_L8:
        if (k2 != 2) goto _L11; else goto _L10
_L10:
        if (!a(ai)) goto _L13; else goto _L12
_L12:
        AlignmentPattern alignmentpattern = a(ai, l1, j2);
        if (alignmentpattern == null) goto _L13; else goto _L14
_L14:
        return alignmentpattern;
_L13:
        ai[0] = ai[2];
        ai[1] = 1;
        ai[2] = 0;
        k2 = 1;
          goto _L15
_L11:
        k2++;
        ai[k2] = 1 + ai[k2];
          goto _L15
_L6:
        if (k2 == 1)
        {
            k2++;
        }
        ai[k2] = 1 + ai[k2];
          goto _L15
_L4:
        if (!a(ai))
        {
            continue; /* Loop/switch isn't completed */
        }
        alignmentpattern = a(ai, l1, l);
        if (alignmentpattern != null) goto _L14; else goto _L16
_L16:
        j1++;
          goto _L17
_L2:
        if (!b.isEmpty())
        {
            return (AlignmentPattern)b.get(0);
        } else
        {
            throw NotFoundException.getNotFoundInstance();
        }
    }
}