mirror of
https://gitee.com/openharmony/third_party_qrcodegen
synced 2025-02-19 08:40:29 +00:00
Simplified QrCode.getPenalty().
This commit is contained in:
parent
8dabf86641
commit
db2d52116a
@ -484,7 +484,6 @@ public final class QrCode {
|
||||
int runColor = 0;
|
||||
int runX = 0;
|
||||
Arrays.fill(runHistory, 0);
|
||||
int padRun = size; // Add white border to initial run
|
||||
int curRow = 0;
|
||||
int nextRow = 0;
|
||||
for (int x = 0; x < size; x++, index++, downIndex++) {
|
||||
@ -496,8 +495,7 @@ public final class QrCode {
|
||||
else if (runX > 5)
|
||||
result++;
|
||||
} else {
|
||||
finderPenaltyAddHistory(runX + padRun, runHistory);
|
||||
padRun = 0;
|
||||
finderPenaltyAddHistory(runX, runHistory);
|
||||
if (runColor == 0)
|
||||
result += finderPenaltyCountPatterns(runHistory) * PENALTY_N3;
|
||||
runColor = c;
|
||||
@ -512,7 +510,7 @@ public final class QrCode {
|
||||
result += PENALTY_N2;
|
||||
}
|
||||
}
|
||||
result += finderPenaltyTerminateAndCount(runColor, runX + padRun, runHistory) * PENALTY_N3;
|
||||
result += finderPenaltyTerminateAndCount(runColor, runX, runHistory) * PENALTY_N3;
|
||||
}
|
||||
|
||||
// Iterate over single columns
|
||||
@ -520,7 +518,6 @@ public final class QrCode {
|
||||
int runColor = 0;
|
||||
int runY = 0;
|
||||
Arrays.fill(runHistory, 0);
|
||||
int padRun = size; // Add white border to initial run
|
||||
for (int y = 0, index = x; y < size; y++, index += size) {
|
||||
int c = getBit(modules[index >>> 5], index);
|
||||
if (c == runColor) {
|
||||
@ -530,15 +527,14 @@ public final class QrCode {
|
||||
else if (runY > 5)
|
||||
result++;
|
||||
} else {
|
||||
finderPenaltyAddHistory(runY + padRun, runHistory);
|
||||
padRun = 0;
|
||||
finderPenaltyAddHistory(runY, runHistory);
|
||||
if (runColor == 0)
|
||||
result += finderPenaltyCountPatterns(runHistory) * PENALTY_N3;
|
||||
runColor = c;
|
||||
runY = 1;
|
||||
}
|
||||
}
|
||||
result += finderPenaltyTerminateAndCount(runColor, runY + padRun, runHistory) * PENALTY_N3;
|
||||
result += finderPenaltyTerminateAndCount(runColor, runY, runHistory) * PENALTY_N3;
|
||||
}
|
||||
|
||||
// Balance of black and white modules
|
||||
@ -587,7 +583,9 @@ public final class QrCode {
|
||||
|
||||
|
||||
// Pushes the given value to the front and drops the last value. A helper function for getPenaltyScore().
|
||||
private static void finderPenaltyAddHistory(int currentRunLength, int[] runHistory) {
|
||||
private void finderPenaltyAddHistory(int currentRunLength, int[] runHistory) {
|
||||
if (runHistory[0] == 0)
|
||||
currentRunLength += size; // Add white border to initial run
|
||||
System.arraycopy(runHistory, 0, runHistory, 1, runHistory.length - 1);
|
||||
runHistory[0] = currentRunLength;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user