X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=core%2Fsrc%2Fcom%2Fgoogle%2Fzxing%2Foned%2FAbstractOneDReader.java;h=10e0b6026388651b9985207f89fe567bce71969e;hb=6d1e5858c1e6231f4c5037e8687d99791a0cef12;hp=004eb471753b97d06b29114a06b1f97821250170;hpb=f8bdae4de2d3f78fdb7063726e55c5dce3324e03;p=zxing.git diff --git a/core/src/com/google/zxing/oned/AbstractOneDReader.java b/core/src/com/google/zxing/oned/AbstractOneDReader.java index 004eb471..10e0b602 100644 --- a/core/src/com/google/zxing/oned/AbstractOneDReader.java +++ b/core/src/com/google/zxing/oned/AbstractOneDReader.java @@ -16,15 +16,13 @@ package com.google.zxing.oned; -import com.google.zxing.BlackPointEstimationMethod; +import com.google.zxing.BinaryBitmap; import com.google.zxing.DecodeHintType; -import com.google.zxing.MonochromeBitmapSource; import com.google.zxing.ReaderException; import com.google.zxing.Result; import com.google.zxing.ResultMetadataType; import com.google.zxing.ResultPoint; import com.google.zxing.common.BitArray; -import com.google.zxing.common.GenericResultPoint; import java.util.Hashtable; @@ -40,24 +38,25 @@ public abstract class AbstractOneDReader implements OneDReader { private static final int INTEGER_MATH_SHIFT = 8; static final int PATTERN_MATCH_RESULT_SCALE_FACTOR = 1 << INTEGER_MATH_SHIFT; - public final Result decode(MonochromeBitmapSource image) throws ReaderException { + public final Result decode(BinaryBitmap image) throws ReaderException { return decode(image, null); } - public final Result decode(MonochromeBitmapSource image, Hashtable hints) throws ReaderException { + public final Result decode(BinaryBitmap image, Hashtable hints) throws ReaderException { try { return doDecode(image, hints); } catch (ReaderException re) { boolean tryHarder = hints != null && hints.containsKey(DecodeHintType.TRY_HARDER); if (tryHarder && image.isRotateSupported()) { - MonochromeBitmapSource rotatedImage = image.rotateCounterClockwise(); + BinaryBitmap rotatedImage = image.rotateCounterClockwise(); Result result = doDecode(rotatedImage, hints); // Record that we found it rotated 90 degrees CCW / 270 degrees CW Hashtable metadata = result.getResultMetadata(); int orientation = 270; if (metadata != null && metadata.containsKey(ResultMetadataType.ORIENTATION)) { // But if we found it reversed in doDecode(), add in that result here: - orientation = (orientation + ((Integer) metadata.get(ResultMetadataType.ORIENTATION)).intValue()) % 360; + orientation = (orientation + + ((Integer) metadata.get(ResultMetadataType.ORIENTATION)).intValue()) % 360; } result.putMetadata(ResultMetadataType.ORIENTATION, new Integer(orientation)); return result; @@ -81,7 +80,7 @@ public abstract class AbstractOneDReader implements OneDReader { * @return The contents of the decoded barcode * @throws ReaderException Any spontaneous errors which occur */ - private Result doDecode(MonochromeBitmapSource image, Hashtable hints) throws ReaderException { + private Result doDecode(BinaryBitmap image, Hashtable hints) throws ReaderException { int width = image.getWidth(); int height = image.getHeight(); BitArray row = new BitArray(width); @@ -109,11 +108,10 @@ public abstract class AbstractOneDReader implements OneDReader { // Estimate black point for this row and load it: try { - image.estimateBlackPoint(BlackPointEstimationMethod.ROW_SAMPLING, rowNumber); + row = image.getBlackRow(rowNumber, row); } catch (ReaderException re) { continue; - } - image.getBlackRow(rowNumber, row, 0, width); + } // While we have the image data in a BitArray, it's fairly cheap to reverse it in place to // handle decoding upside down barcodes. @@ -130,8 +128,8 @@ public abstract class AbstractOneDReader implements OneDReader { result.putMetadata(ResultMetadataType.ORIENTATION, new Integer(180)); // And remember to flip the result points horizontally. ResultPoint[] points = result.getResultPoints(); - points[0] = new GenericResultPoint(width - points[0].getX() - 1, points[0].getY()); - points[1] = new GenericResultPoint(width - points[1].getX() - 1, points[1].getY()); + points[0] = new ResultPoint(width - points[0].getX() - 1, points[0].getY()); + points[1] = new ResultPoint(width - points[1].getX() - 1, points[1].getY()); } return result; } catch (ReaderException re) { @@ -153,7 +151,8 @@ public abstract class AbstractOneDReader implements OneDReader { * @param row row to count from * @param start offset into row to start at * @param counters array into which to record counts - * @throws ReaderException if counters cannot be filled entirely from row before running out of pixels + * @throws ReaderException if counters cannot be filled entirely from row before running out + * of pixels */ static void recordPattern(BitArray row, int start, int[] counters) throws ReaderException { int numCounters = counters.length; @@ -239,6 +238,7 @@ public abstract class AbstractOneDReader implements OneDReader { // method of an interface it implements, but it is causing NoSuchMethodError // issues on some Nokia JVMs. So we add this superfluous declaration: - public abstract Result decodeRow(int rowNumber, BitArray row, Hashtable hints) throws ReaderException; + public abstract Result decodeRow(int rowNumber, BitArray row, Hashtable hints) + throws ReaderException; }