From 7eec24ee881d16e10dac4228adb5aa199eec0b29 Mon Sep 17 00:00:00 2001 From: dswitkin Date: Fri, 6 Mar 2009 16:52:35 +0000 Subject: [PATCH] Changed the order of the BaseMonochromeBitmapSource constructor arguments to be width, height to match the rest of the codebase, and added two apparently missing methods to the J2ME subclass, although I can't test it. git-svn-id: http://zxing.googlecode.com/svn/trunk@874 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- .../android/YUVMonochromeBitmapSource.java | 2 +- .../androidtest/RGBMonochromeBitmapSource.java | 2 +- .../bug/AWTImageMonochromeBitmapSource.java | 2 +- .../common/BaseMonochromeBitmapSource.java | 2 +- .../j2me/LCDUIImageMonochromeBitmapSource.java | 10 +++++++++- .../BufferedImageMonochromeBitmapSource.java | 18 ++++++++++++------ 6 files changed, 25 insertions(+), 11 deletions(-) diff --git a/android/src/com/google/zxing/client/android/YUVMonochromeBitmapSource.java b/android/src/com/google/zxing/client/android/YUVMonochromeBitmapSource.java index 913240f5..8aad4673 100755 --- a/android/src/com/google/zxing/client/android/YUVMonochromeBitmapSource.java +++ b/android/src/com/google/zxing/client/android/YUVMonochromeBitmapSource.java @@ -78,7 +78,7 @@ public final class YUVMonochromeBitmapSource extends BaseMonochromeBitmapSource int cropLeft, int cropBottom, int cropRight) { - super(cropBottom - cropTop, cropRight - cropLeft); + super(cropRight - cropLeft, cropBottom - cropTop); if (cropRight - cropLeft > dataWidth || cropBottom - cropTop > dataHeight) { throw new IllegalArgumentException(); } diff --git a/androidtest/src/com/google/zxing/client/androidtest/RGBMonochromeBitmapSource.java b/androidtest/src/com/google/zxing/client/androidtest/RGBMonochromeBitmapSource.java index 5b5ae29a..8f1c249c 100644 --- a/androidtest/src/com/google/zxing/client/androidtest/RGBMonochromeBitmapSource.java +++ b/androidtest/src/com/google/zxing/client/androidtest/RGBMonochromeBitmapSource.java @@ -39,7 +39,7 @@ public final class RGBMonochromeBitmapSource extends BaseMonochromeBitmapSource } public RGBMonochromeBitmapSource(Bitmap bitmap) { - super(bitmap.getHeight(), bitmap.getWidth()); + super(bitmap.getWidth(), bitmap.getHeight()); int width = bitmap.getWidth(); int height = bitmap.getHeight(); int[] pixels = new int[width * height]; diff --git a/bug/src/com/google/zxing/client/bug/AWTImageMonochromeBitmapSource.java b/bug/src/com/google/zxing/client/bug/AWTImageMonochromeBitmapSource.java index a7bc4f25..735af34f 100644 --- a/bug/src/com/google/zxing/client/bug/AWTImageMonochromeBitmapSource.java +++ b/bug/src/com/google/zxing/client/bug/AWTImageMonochromeBitmapSource.java @@ -36,7 +36,7 @@ public final class AWTImageMonochromeBitmapSource extends BaseMonochromeBitmapSo private final int[] pixels; public AWTImageMonochromeBitmapSource(Image image) throws ReaderException { - super(image.getHeight(null), image.getWidth(null)); + super(image.getWidth(null), image.getHeight(null)); int height = getHeight(); int width = getWidth(); pixels = new int[height * width]; diff --git a/core/src/com/google/zxing/common/BaseMonochromeBitmapSource.java b/core/src/com/google/zxing/common/BaseMonochromeBitmapSource.java index cbf1dcda..0e6699e8 100644 --- a/core/src/com/google/zxing/common/BaseMonochromeBitmapSource.java +++ b/core/src/com/google/zxing/common/BaseMonochromeBitmapSource.java @@ -35,7 +35,7 @@ public abstract class BaseMonochromeBitmapSource implements MonochromeBitmapSour private int lastArgument; private int[] luminances; - protected BaseMonochromeBitmapSource(int height, int width) { + protected BaseMonochromeBitmapSource(int width, int height) { this.height = height; this.width = width; blackPoint = 0x7F; diff --git a/javame/src/com/google/zxing/client/j2me/LCDUIImageMonochromeBitmapSource.java b/javame/src/com/google/zxing/client/j2me/LCDUIImageMonochromeBitmapSource.java index fb06732f..b65b7159 100644 --- a/javame/src/com/google/zxing/client/j2me/LCDUIImageMonochromeBitmapSource.java +++ b/javame/src/com/google/zxing/client/j2me/LCDUIImageMonochromeBitmapSource.java @@ -32,11 +32,19 @@ public final class LCDUIImageMonochromeBitmapSource extends BaseMonochromeBitmap private final int[] pixelHolder; public LCDUIImageMonochromeBitmapSource(Image image) { - super(image.getHeight(), image.getWidth()); + super(image.getWidth(), image.getHeight()); this.image = image; pixelHolder = new int[1]; } + public final int getHeight() { + return image.getHeight(); + } + + public final int getWidth() { + return image.getWidth(); + } + // This is expensive and should be used very sparingly. protected int getLuminance(int x, int y) { image.getRGB(pixelHolder, 0, getWidth(), x, y, 1, 1); diff --git a/javase/src/com/google/zxing/client/j2se/BufferedImageMonochromeBitmapSource.java b/javase/src/com/google/zxing/client/j2se/BufferedImageMonochromeBitmapSource.java index d01c5f7e..5c6d75b0 100644 --- a/javase/src/com/google/zxing/client/j2se/BufferedImageMonochromeBitmapSource.java +++ b/javase/src/com/google/zxing/client/j2se/BufferedImageMonochromeBitmapSource.java @@ -57,17 +57,20 @@ public final class BufferedImageMonochromeBitmapSource extends BaseMonochromeBit * @param image image to decode a region of * @param left x coordinate of leftmost pixels to decode * @param top y coordinate of topmost pixels to decode - * @param right one more than the x coordinate of rightmost pixels to decode. That is, we will decode + * @param right one more than the x coordinate of rightmost pixels to decode, i.e. we will decode * pixels whose x coordinate is in [left,right) * @param bottom likewise, one more than the y coordinate of the bottommost pixels to decode */ - public BufferedImageMonochromeBitmapSource(BufferedImage image, int left, int top, int right, int bottom) { - super(bottom - top, right - left); + public BufferedImageMonochromeBitmapSource(BufferedImage image, int left, int top, int right, + int bottom) { + super(right - left, bottom - top); this.image = image; int sourceHeight = image.getHeight(); int sourceWidth = image.getWidth(); - if (left < 0 || top < 0 || right > sourceWidth || bottom > sourceHeight || right <= left || bottom <= top) { - throw new IllegalArgumentException("Invalid bounds: (" + top + ',' + left + ") (" + right + ',' + bottom + ')'); + if (left < 0 || top < 0 || right > sourceWidth || bottom > sourceHeight || right <= left || + bottom <= top) { + throw new IllegalArgumentException("Invalid bounds: (" + top + ',' + left + ") (" + right + + ',' + bottom + ')'); } this.left = left; this.top = top; @@ -75,7 +78,8 @@ public final class BufferedImageMonochromeBitmapSource extends BaseMonochromeBit /** * @return underlying {@link BufferedImage} behind this instance. Note that even if this instance - * only uses a subset of the full image, the returned value here represents the entire backing image. + * only uses a subset of the full image, the returned value here represents the entire backing + * image. */ public BufferedImage getImage() { return image; @@ -88,9 +92,11 @@ public final class BufferedImageMonochromeBitmapSource extends BaseMonochromeBit } int sourceWidth = image.getWidth(); int sourceHeight = image.getHeight(); + // 90 degrees counterclockwise: AffineTransform transform = new AffineTransform(0.0, -1.0, 1.0, 0.0, 0.0, sourceWidth); BufferedImageOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_NEAREST_NEIGHBOR); + // Note width/height are flipped since we are rotating 90 degrees: BufferedImage rotatedImage = new BufferedImage(sourceHeight, sourceWidth, image.getType()); op.filter(image, rotatedImage); -- 2.20.1