package com.google.zxing.common;
-import com.google.zxing.MonochromeBitmapSource;
import com.google.zxing.ReaderException;
/**
*/
public final class DefaultGridSampler extends GridSampler {
- public BitMatrix sampleGrid(MonochromeBitmapSource image,
+ public BitMatrix sampleGrid(BitMatrix image,
int dimension,
float p1ToX, float p1ToY,
float p2ToX, float p2ToY,
BitMatrix bits = new BitMatrix(dimension);
float[] points = new float[dimension << 1];
- for (int i = 0; i < dimension; i++) {
+ for (int y = 0; y < dimension; y++) {
int max = points.length;
- float iValue = (float) i + 0.5f;
- for (int j = 0; j < max; j += 2) {
- points[j] = (float) (j >> 1) + 0.5f;
- points[j + 1] = iValue;
+ float iValue = (float) y + 0.5f;
+ for (int x = 0; x < max; x += 2) {
+ points[x] = (float) (x >> 1) + 0.5f;
+ points[x + 1] = iValue;
}
transform.transformPoints(points);
// Quick check to see if points transformed to something inside the image;
- // sufficent to check the endpoints
+ // sufficient to check the endpoints
checkAndNudgePoints(image, points);
try {
- for (int j = 0; j < max; j += 2) {
- if (image.isBlack((int) points[j], (int) points[j + 1])) {
+ for (int x = 0; x < max; x += 2) {
+ if (image.get((int) points[x], (int) points[x + 1])) {
// Black(-ish) pixel
- bits.set(i, j >> 1);
+ bits.set(x >> 1, y);
}
}
} catch (ArrayIndexOutOfBoundsException aioobe) {
// transform gets "twisted" such that it maps a straight line of points to a set of points
// whose endpoints are in bounds, but others are not. There is probably some mathematical
// way to detect this about the transformation that I don't know yet.
- // This results in an ugly runtime exception despite our clever checks above -- can't have that.
- // We could check each point's coordinates but that feels duplicative. We settle for
+ // This results in an ugly runtime exception despite our clever checks above -- can't have
+ // that. We could check each point's coordinates but that feels duplicative. We settle for
// catching and wrapping ArrayIndexOutOfBoundsException.
throw ReaderException.getInstance();
}