📄 a.java
字号:
// Decompiled by DJ v3.9.9.91 Copyright 2005 Atanas Neshkov Date: 12/5/2006 3:39:10 PM
// Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version!
// Decompiler options: packimports(3)
package jp.sourceforge.qrcode;
import java.util.Vector;
import javax.microedition.lcdui.Image;
import jp.sourceforge.qrcode.ecc.b;
import jp.sourceforge.qrcode.exception.c;
import jp.sourceforge.qrcode.exception.d;
import jp.sourceforge.qrcode.exception.f;
import jp.sourceforge.qrcode.exception.g;
import jp.sourceforge.qrcode.exception.h;
public final class a
{
public a()
{
a = 1;
}
public a(int i)
{
a = 1;
a = i;
}
public final String a(Image image)
throws f, d
{
try
{
b = c(image);
}
catch(h _ex)
{
throw new f();
}
boolean aflag[] = a(b);
b.a(aflag);
String s;
int i = (s = Integer.toString(b.e(), 2)).length();
for(int j = 0; j < 3 - i; j++)
s = "0" + s;
b(b);
int ai[] = d(b);
boolean flag = false;
int ai1[] = a(ai);
boolean flag1 = false;
String s1 = null;
try
{
s1 = a(ai1, b.c());
}
catch(g _ex)
{
throw new f();
}
return s1;
}
private boolean[][] b(Image image)
{
int i = image.getWidth();
int j = image.getHeight();
int ai[] = new int[i * j];
image.getRGB(ai, 0, i, 0, 0, i, j);
int ai1[][] = new int[i][j];
for(int l1 = 0; l1 < i; l1++)
{
for(int i2 = 0; i2 < j; i2++)
{
int k1;
int k = (k1 = ai[i2 * i + l1]) >> 16 & 0xff;
int l = k1 >> 8 & 0xff;
int i1 = k1 & 0xff;
int j1 = (299 * k + 587 * l + 114 * i1) / 1000;
ai1[l1][i2] = j1;
}
}
boolean aflag[][] = a(ai1);
boolean aflag1[][];
if(a > 1)
return aflag1 = a(aflag, a);
else
return aflag;
}
private boolean[][] a(int ai[][])
{
int ai1[][];
int i = (ai1 = b(ai)).length;
int j = ai.length / i;
int k = ai[0].length / i;
boolean aflag[][] = new boolean[ai.length][ai[0].length];
for(int l = 0; l < i; l++)
{
for(int i1 = 0; i1 < i; i1++)
{
for(int j1 = 0; j1 < k; j1++)
{
for(int k1 = 0; k1 < j; k1++)
aflag[j * i1 + k1][k * l + j1] = ai[j * i1 + k1][k * l + j1] < ai1[i1][l];
}
}
}
return aflag;
}
private static int[][] b(int ai[][])
{
int i = ai.length / 4;
int j = ai[0].length / 4;
int ai1[][][] = new int[4][4][2];
for(int l = 0; l < 4; l++)
{
for(int i1 = 0; i1 < 4; i1++)
{
ai1[i1][l][0] = 255;
for(int k1 = 0; k1 < j; k1++)
{
for(int i2 = 0; i2 < i; i2++)
{
int k;
if((k = ai[i * i1 + i2][j * l + k1]) < ai1[i1][l][0])
ai1[i1][l][0] = k;
if(k > ai1[i1][l][1])
ai1[i1][l][1] = k;
}
}
}
}
int ai2[][] = new int[4][4];
for(int j1 = 0; j1 < 4; j1++)
{
for(int l1 = 0; l1 < 4; l1++)
ai2[l1][j1] = (ai1[l1][j1][0] + ai1[l1][j1][1]) / 2;
}
return ai2;
}
private static boolean[][] a(boolean aflag[][], int i)
{
boolean aflag1[][] = new boolean[aflag.length * i][aflag[0].length * i];
for(int j = 0; j < aflag[0].length; j++)
{
label0:
for(int k = 0; k < aflag.length; k++)
{
if(!aflag[k][j])
continue;
int l = 0;
do
{
if(l >= i)
continue label0;
for(int i1 = 0; i1 < i; i1++)
aflag1[k * i + l][j * i + i1] = true;
l++;
} while(true);
}
}
return aflag1;
}
private jp.sourceforge.qrcode.data.a c(Image image)
throws h, d
{
boolean aflag[][] = b(image);
jp.sourceforge.qrcode.reader.b b1 = new jp.sourceforge.qrcode.reader.b();
jp.sourceforge.qrcode.data.a a1 = null;
try
{
a1 = b1.a(aflag);
}
catch(jp.sourceforge.qrcode.exception.b _ex)
{
throw new h();
}
catch(c _ex)
{
throw new h();
}
catch(jp.sourceforge.qrcode.exception.a _ex)
{
throw new h();
}
return a1;
}
private static boolean[] a(jp.sourceforge.qrcode.data.a a1)
{
boolean aflag[] = new boolean[15];
for(int i = 0; i <= 5; i++)
aflag[i] = a1.a(8, i);
aflag[6] = a1.a(8, 7);
aflag[7] = a1.a(8, 8);
aflag[8] = a1.a(7, 8);
for(int j = 9; j <= 14; j++)
aflag[j] = a1.a(14 - j, 8);
for(int k = 0; k <= 14; k++)
{
boolean flag;
if((21522 >>> k & 1) == 1)
flag = true;
else
flag = false;
if(aflag[k] == flag)
aflag[k] = false;
else
aflag[k] = true;
}
b b1;
boolean aflag1[] = (b1 = new b(aflag)).a();
boolean aflag2[] = new boolean[5];
for(int l = 0; l < 5; l++)
aflag2[l] = aflag1[10 + l];
return aflag2;
}
private void b(jp.sourceforge.qrcode.data.a a1)
{
boolean aflag[][] = c(a1);
int i = a1.f();
for(int j = 0; j < i; j++)
{
for(int k = 0; k < i; k++)
if(aflag[k][j])
a1.b(k, j);
}
}
private static boolean[][] c(jp.sourceforge.qrcode.data.a a1)
{
int i = a1.e();
int j = a1.f();
int k = a1.g();
boolean aflag[][] = new boolean[j][k];
for(int l = 0; l < k; l++)
{
for(int i1 = 0; i1 < j; i1++)
if(!a1.c(i1, l))
switch(i)
{
default:
break;
case 0: // '\0'
if((i1 + l) % 2 == 0)
aflag[i1][l] = true;
break;
case 1: // '\001'
if(l % 2 == 0)
aflag[i1][l] = true;
break;
case 2: // '\002'
if(i1 % 3 == 0)
aflag[i1][l] = true;
break;
case 3: // '\003'
if((i1 + l) % 3 == 0)
aflag[i1][l] = true;
break;
case 4: // '\004'
if((i1 / 3 + l / 2) % 2 == 0)
aflag[i1][l] = true;
break;
case 5: // '\005'
if((i1 * l) % 2 + (i1 * l) % 3 == 0)
aflag[i1][l] = true;
break;
case 6: // '\006'
if(((i1 * l) % 2 + (i1 * l) % 3) % 2 == 0)
aflag[i1][l] = true;
break;
case 7: // '\007'
if(((i1 * l) % 3 + (i1 + l) % 2) % 2 == 0)
aflag[i1][l] = true;
break;
}
}
return aflag;
}
private static int[] d(jp.sourceforge.qrcode.data.a a1)
{
int i = a1.f();
int j = a1.g();
int k = i - 1;
int l = j - 1;
Vector vector = new Vector();
Vector vector1 = new Vector();
int i1 = 0;
int j1 = 7;
int k1 = 0;
boolean flag = true;
do
{
vector.addElement(new Boolean(a1.a(k, l)));
if(a1.a(k, l))
i1 += 1 << j1;
if(--j1 == -1)
{
vector1.addElement(new Integer(i1));
j1 = 7;
i1 = 0;
}
do
if(flag)
{
if((k + k1) % 2 == 0)
k--;
else
if(l > 0)
{
k++;
l--;
} else
{
if(--k == 6)
{
k--;
k1 = 1;
}
flag = false;
}
} else
if((k + k1) % 2 == 0)
k--;
else
if(l < j - 1)
{
k++;
l++;
} else
{
if(--k == 6)
{
k--;
k1 = 1;
}
flag = true;
}
while(a1.c(k, l));
} while(k != -1);
int ai[] = new int[vector1.size()];
for(int l1 = 0; l1 < vector1.size(); l1++)
{
Integer integer = (Integer)vector1.elementAt(l1);
ai[l1] = integer.intValue();
}
return ai;
}
private int[] a(int ai[])
{
int i;
int ai1[] = new int[i = b.d()];
int j = b.a();
int k = b.b();
int l = j / k;
if(k == 1)
{
jp.sourceforge.qrcode.ecc.a a1;
(a1 = new jp.sourceforge.qrcode.ecc.a(ai)).a();
return ai;
}
int i1;
if((i1 = i % k) == 0)
{
int j1 = i / k;
int ai2[][] = new int[k][j1];
for(int i2 = 0; i2 < k; i2++)
{
for(int l2 = 0; l2 < j1; l2++)
ai2[i2][l2] = ai[l2 * k + i2];
jp.sourceforge.qrcode.ecc.a a2;
(a2 = new jp.sourceforge.qrcode.ecc.a(ai2[i2])).a();
}
int j2 = 0;
for(int i3 = 0; i3 < k; i3++)
{
for(int j3 = 0; j3 < j1 - l; j3++)
ai1[j2++] = ai2[i3][j3];
}
} else
{
int k1 = i / k;
int l1 = i / k + 1;
int k2;
int ai3[][] = new int[k2 = k - i1][k1];
int ai4[][] = new int[i1][l1];
for(int k3 = 0; k3 < k; k3++)
{
if(k3 < k2)
{
int i4 = 0;
for(int l4 = 0; l4 < k1; l4++)
{
if(l4 == k1 - l)
i4 = i1;
ai3[k3][l4] = ai[l4 * k + k3 + i4];
}
jp.sourceforge.qrcode.ecc.a a3;
(a3 = new jp.sourceforge.qrcode.ecc.a(ai3[k3])).a();
continue;
}
int j4 = 0;
for(int i5 = 0; i5 < l1; i5++)
{
if(i5 == k1 - l)
j4 = k2;
ai4[k3 - k2][i5] = ai[(i5 * k + k3) - j4];
}
jp.sourceforge.qrcode.ecc.a a4;
(a4 = new jp.sourceforge.qrcode.ecc.a(ai4[k3 - k2])).a();
}
int l3 = 0;
for(int k4 = 0; k4 < k; k4++)
{
if(k4 < k2)
{
for(int j5 = 0; j5 < k1 - l; j5++)
ai1[l3++] = ai3[k4][j5];
continue;
}
for(int k5 = 0; k5 < l1 - l; k5++)
ai1[l3++] = ai4[k4 - k2][k5];
}
}
return ai1;
}
private static String a(int ai[], int i)
throws g
{
String s = null;
jp.sourceforge.qrcode.reader.a a1 = new jp.sourceforge.qrcode.reader.a(ai, i);
try
{
s = a1.a();
}
catch(ArrayIndexOutOfBoundsException _ex)
{
throw new g();
}
return s;
}
int a;
jp.sourceforge.qrcode.data.a b;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -