if (otherToX < 0) {
scale = (float) fromX / (float) (fromX - otherToX);
otherToX = 0;
- } else if (otherToX >= image.getWidth()) {
- scale = (float) (image.getWidth() - 1 - fromX) / (float) (otherToX - fromX);
- otherToX = image.getWidth() - 1;
+ } else if (otherToX > image.getWidth()) {
+ scale = (float) (image.getWidth() - fromX) / (float) (otherToX - fromX);
+ otherToX = image.getWidth();
}
int otherToY = (int) (fromY - (toY - fromY) * scale);
if (otherToY < 0) {
scale = (float) fromY / (float) (fromY - otherToY);
otherToY = 0;
- } else if (otherToY >= image.getHeight()) {
- scale = (float) (image.getHeight() - 1 - fromY) / (float) (otherToY - fromY);
- otherToY = image.getHeight() - 1;
+ } else if (otherToY > image.getHeight()) {
+ scale = (float) (image.getHeight() - fromY) / (float) (otherToY - fromY);
+ otherToY = image.getHeight();
}
otherToX = (int) (fromX + (otherToX - fromX) * scale);
result += sizeOfBlackWhiteBlackRun(fromX, fromY, otherToX, otherToY);
- return result - 1.0f; // -1 because we counted the middle pixel twice
+ return result;
}
/**
if (state == 3) { // Found black, white, black, and stumbled back onto white; done
int diffX = x - fromX;
int diffY = y - fromY;
+ if (xstep < 0) {
+ diffX++;
+ }
return (float) Math.sqrt((double) (diffX * diffX + diffY * diffY));
}
error += dy;
--- /dev/null
+BEGIN:VCARD\r
+N:Kennedy;Steve\r
+TEL:+44 (0)7775 755503\r
+ADR;HOME:;;Flat 2, 43 Howitt Road, Belsize Park;London;;NW34LU;UK\r
+ORG:NetTek Ltd;\r
+TITLE:Consultant\r
+EMAIL:steve@nettek.co.uk\r
+URL:www.nettek.co.uk\r
+EMAIL;IM:MSN:steve@gbnet.net\r
+NOTE:Testing 1 2 3\r
+BDAY:19611105\r
+END:VCARD
\ No newline at end of file
public QRCodeBlackBox2TestCase() {
super("test/data/blackbox/qrcode-2", new MultiFormatReader(), BarcodeFormat.QR_CODE);
- addTest(23, 23, 0.0f);
- addTest(21, 21, 90.0f);
- addTest(23, 23, 180.0f);
- addTest(20, 21, 270.0f);
+ addTest(26, 26, 0.0f);
+ addTest(24, 24, 90.0f);
+ addTest(24, 24, 180.0f);
+ addTest(22, 23, 270.0f);
}
}
if (otherToX < 0) {\r
scale = (float) fromX / (float) (fromX - otherToX);\r
otherToX = 0;\r
- } else if (otherToX >= (int)image_->getWidth()) {\r
- scale = (float) (image_->getWidth() - 1 - fromX) / (float) (otherToX - fromX);\r
- otherToX = image_->getWidth() - 1;\r
+ } else if (otherToX > (int)image_->getWidth()) {\r
+ scale = (float) (image_->getWidth() - fromX) / (float) (otherToX - fromX);\r
+ otherToX = image_->getWidth();\r
}\r
int otherToY = (int) (fromY - (toY - fromY) * scale);\r
\r
if (otherToY < 0) {\r
scale = (float) fromY / (float) (fromY - otherToY);\r
otherToY = 0;\r
- } else if (otherToY >= (int)image_->getHeight()) {\r
- scale = (float) (image_->getHeight() - 1 - fromY) / (float) (otherToY - fromY);\r
- otherToY = image_->getHeight() - 1;\r
+ } else if (otherToY > (int)image_->getHeight()) {\r
+ scale = (float) (image_->getHeight() - fromY) / (float) (otherToY - fromY);\r
+ otherToY = image_->getHeight();\r
}\r
otherToX = (int) (fromX + (otherToX - fromX) * scale);\r
\r
result += sizeOfBlackWhiteBlackRun(fromX, fromY, otherToX, otherToY);\r
- return result - 1.0f; // -1 because we counted the middle pixel twice\r
+ return result;\r
}\r
\r
float Detector::sizeOfBlackWhiteBlackRun(int fromX, int fromY, int toX, int toY) {\r
if (state == 3) { // Found black, white, black, and stumbled back onto white; done\r
int diffX = x - fromX;\r
int diffY = y - fromY;\r
+ if (xstep < 0) {\r
+ diffX++;\r
+ }\r
return (float)sqrt((double)(diffX * diffX + diffY * diffY));\r
}\r
error += dy;\r