package com.google.zxing.common;

import com.google.zxing.Binarizer;
import com.google.zxing.LuminanceSource;
import com.google.zxing.NotFoundException;
import java.lang.reflect.Array;

public final class HybridBinarizer extends GlobalHistogramBinarizer
{
  private static final int BLOCK_SIZE = 8;
  private static final int BLOCK_SIZE_MASK = 7;
  private static final int BLOCK_SIZE_POWER = 3;
  private static final int MINIMUM_DIMENSION = 40;
  private static final int MIN_DYNAMIC_RANGE = 24;
  private BitMatrix matrix;

  public HybridBinarizer(LuminanceSource paramLuminanceSource)
  {
    super(paramLuminanceSource);
  }

  private static int[][] calculateBlackPoints(byte[] paramArrayOfByte, int paramInt1, int paramInt2, int paramInt3, int paramInt4)
  {
    int[] arrayOfInt = { paramInt2, paramInt1 };
    int[][] arrayOfInt1 = (int[][])Array.newInstance(Integer.TYPE, arrayOfInt);
    int i = 0;
    if (i >= paramInt2)
      return arrayOfInt1;
    int j = i << 3;
    int k = paramInt4 - 8;
    if (j > k)
      j = k;
    int i2;
    int i3;
    int i4;
    int i5;
    int i6;
    for (int m = 0; ; m++)
    {
      if (m >= paramInt1)
      {
        i++;
        break;
      }
      int n = m << 3;
      int i1 = paramInt3 - 8;
      if (n > i1)
        n = i1;
      i2 = 0;
      i3 = 255;
      i4 = 0;
      i5 = 0;
      i6 = n + j * paramInt3;
      if (i5 < 8)
        break label230;
      int i10 = i2 >> 6;
      if (i4 - i3 <= 24)
      {
        i10 = i3 / 2;
        if ((i > 0) && (m > 0))
        {
          int i11 = (arrayOfInt1[(i - 1)][m] + 2 * arrayOfInt1[i][(m - 1)] + arrayOfInt1[(i - 1)][(m - 1)]) / 4;
          if (i3 < i11)
            i10 = i11;
        }
      }
      arrayOfInt1[i][m] = i10;
    }
    label230: for (int i7 = 0; ; i7++)
    {
      if (i7 >= 8)
      {
        if (i4 - i3 > 24)
        {
          i5++;
          i6 += paramInt3;
          if (i5 < 8)
            break label326;
        }
        i5++;
        i6 += paramInt3;
        break;
      }
      int i8 = 0xFF & paramArrayOfByte[(i6 + i7)];
      i2 += i8;
      if (i8 < i3)
        i3 = i8;
      if (i8 > i4)
        i4 = i8;
    }
    label326: for (int i9 = 0; ; i9++)
    {
      if (i9 >= 8)
      {
        i5++;
        i6 += paramInt3;
        break;
      }
      i2 += (0xFF & paramArrayOfByte[(i6 + i9)]);
    }
  }

  private static void calculateThresholdForBlock(byte[] paramArrayOfByte, int paramInt1, int paramInt2, int paramInt3, int paramInt4, int[][] paramArrayOfInt, BitMatrix paramBitMatrix)
  {
    int j;
    int m;
    for (int i = 0; ; i++)
    {
      if (i >= paramInt2)
        return;
      j = i << 3;
      int k = paramInt4 - 8;
      if (j > k)
        j = k;
      m = 0;
      if (m < paramInt1)
        break;
    }
    int n = m << 3;
    int i1 = paramInt3 - 8;
    if (n > i1)
      n = i1;
    int i2 = cap(m, 2, paramInt1 - 3);
    int i3 = cap(i, 2, paramInt2 - 3);
    int i4 = 0;
    for (int i5 = -2; ; i5++)
    {
      if (i5 > 2)
      {
        thresholdBlock(paramArrayOfByte, n, j, i4 / 25, paramInt3, paramBitMatrix);
        m++;
        break;
      }
      int[] arrayOfInt = paramArrayOfInt[(i3 + i5)];
      i4 += arrayOfInt[(i2 - 2)] + arrayOfInt[(i2 - 1)] + arrayOfInt[i2] + arrayOfInt[(i2 + 1)] + arrayOfInt[(i2 + 2)];
    }
  }

  private static int cap(int paramInt1, int paramInt2, int paramInt3)
  {
    if (paramInt1 < paramInt2)
      return paramInt2;
    if (paramInt1 > paramInt3)
      return paramInt3;
    return paramInt1;
  }

  private static void thresholdBlock(byte[] paramArrayOfByte, int paramInt1, int paramInt2, int paramInt3, int paramInt4, BitMatrix paramBitMatrix)
  {
    int i = 0;
    int j = paramInt1 + paramInt2 * paramInt4;
    if (i >= 8)
      return;
    for (int k = 0; ; k++)
    {
      if (k >= 8)
      {
        i++;
        j += paramInt4;
        break;
      }
      if ((0xFF & paramArrayOfByte[(j + k)]) <= paramInt3)
        paramBitMatrix.set(paramInt1 + k, paramInt2 + i);
    }
  }

  public Binarizer createBinarizer(LuminanceSource paramLuminanceSource)
  {
    return new HybridBinarizer(paramLuminanceSource);
  }

  public BitMatrix getBlackMatrix()
    throws NotFoundException
  {
    if (this.matrix != null)
      return this.matrix;
    LuminanceSource localLuminanceSource = getLuminanceSource();
    int i = localLuminanceSource.getWidth();
    int j = localLuminanceSource.getHeight();
    BitMatrix localBitMatrix;
    if ((i >= 40) && (j >= 40))
    {
      byte[] arrayOfByte = localLuminanceSource.getMatrix();
      int k = i >> 3;
      if ((i & 0x7) != 0)
        k++;
      int m = j >> 3;
      if ((j & 0x7) != 0)
        m++;
      int[][] arrayOfInt = calculateBlackPoints(arrayOfByte, k, m, i, j);
      localBitMatrix = new BitMatrix(i, j);
      calculateThresholdForBlock(arrayOfByte, k, m, i, j, arrayOfInt, localBitMatrix);
    }
    for (this.matrix = localBitMatrix; ; this.matrix = super.getBlackMatrix())
      return this.matrix;
  }
}

/* Location:           C:\Documents and Settings\Cesar Cabello Cea\Mis documentos\Downloads\apk-downloader\com.ikea.kompis-6_dex2jar.jar
 * Qualified Name:     com.google.zxing.common.HybridBinarizer
 * JD-Core Version:    0.6.2
 */