mirror of
https://github.com/zxing/zxing.git
synced 2025-03-05 20:48:51 -08:00
Issue 537, don't return UPC-A for EAN-13 starting with 0 when UPC-A isn't allowed
git-svn-id: https://zxing.googlecode.com/svn/trunk@1572 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
parent
ba2bb1c171
commit
14a03f40b1
|
@ -85,10 +85,16 @@ public final class MultiFormatUPCEANReader extends OneDReader {
|
||||||
// a UPC-A code. But for efficiency we only run the EAN-13 decoder to also read
|
// a UPC-A code. But for efficiency we only run the EAN-13 decoder to also read
|
||||||
// UPC-A. So we special case it here, and convert an EAN-13 result to a UPC-A
|
// UPC-A. So we special case it here, and convert an EAN-13 result to a UPC-A
|
||||||
// result if appropriate.
|
// result if appropriate.
|
||||||
if (result.getBarcodeFormat().equals(BarcodeFormat.EAN_13) &&
|
//
|
||||||
result.getText().charAt(0) == '0') {
|
// But, don't return UPC-A if UPC-A was not a requested format!
|
||||||
return new Result(result.getText().substring(1), null, result.getResultPoints(),
|
boolean ean13MayBeUPCA =
|
||||||
BarcodeFormat.UPC_A);
|
BarcodeFormat.EAN_13.equals(result.getBarcodeFormat()) &&
|
||||||
|
result.getText().charAt(0) == '0';
|
||||||
|
Vector possibleFormats = hints == null ? null : (Vector) hints.get(DecodeHintType.POSSIBLE_FORMATS);
|
||||||
|
boolean canReturnUPCA = possibleFormats == null || possibleFormats.contains(BarcodeFormat.UPC_A);
|
||||||
|
|
||||||
|
if (ean13MayBeUPCA && canReturnUPCA) {
|
||||||
|
return new Result(result.getText().substring(1), null, result.getResultPoints(), BarcodeFormat.UPC_A);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ public final class EAN13BlackBox1TestCase extends AbstractBlackBoxTestCase {
|
||||||
|
|
||||||
public EAN13BlackBox1TestCase() {
|
public EAN13BlackBox1TestCase() {
|
||||||
super("test/data/blackbox/ean13-1", new MultiFormatReader(), BarcodeFormat.EAN_13);
|
super("test/data/blackbox/ean13-1", new MultiFormatReader(), BarcodeFormat.EAN_13);
|
||||||
addTest(29, 32, 0.0f);
|
addTest(30, 32, 0.0f);
|
||||||
addTest(27, 32, 180.0f);
|
addTest(27, 32, 180.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue