diff --git a/src/qrcode/detector/AlignmentPattern.java b/src/qrcode/detector/AlignmentPattern.java deleted file mode 100644 index 90b6889..0000000 --- a/src/qrcode/detector/AlignmentPattern.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2007 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.qrcode.detector; - -import com.google.zxing.RXingResultPoint; - -/** - *
Encapsulates an alignment pattern, which are the smaller square patterns found in - * all but the simplest QR Codes.
- * - * @author Sean Owen - */ -public final class AlignmentPattern extends RXingResultPoint { - - private final float estimatedModuleSize; - - AlignmentPattern(float posX, float posY, float estimatedModuleSize) { - super(posX, posY); - this.estimatedModuleSize = estimatedModuleSize; - } - - /** - *Determines if this alignment pattern "about equals" an alignment pattern at the stated - * position and size -- meaning, it is at nearly the same center with nearly the same size.
- */ - boolean aboutEquals(float moduleSize, float i, float j) { - if (Math.abs(i - getY()) <= moduleSize && Math.abs(j - getX()) <= moduleSize) { - float moduleSizeDiff = Math.abs(moduleSize - estimatedModuleSize); - return moduleSizeDiff <= 1.0f || moduleSizeDiff <= estimatedModuleSize; - } - return false; - } - - /** - * Combines this object's current estimate of a finder pattern position and module size - * with a new estimate. It returns a new {@code FinderPattern} containing an average of the two. - */ - AlignmentPattern combineEstimate(float i, float j, float newModuleSize) { - float combinedX = (getX() + j) / 2.0f; - float combinedY = (getY() + i) / 2.0f; - float combinedModuleSize = (estimatedModuleSize + newModuleSize) / 2.0f; - return new AlignmentPattern(combinedX, combinedY, combinedModuleSize); - } - -} \ No newline at end of file diff --git a/src/qrcode/detector/alignment_pattern.rs b/src/qrcode/detector/alignment_pattern.rs new file mode 100644 index 0000000..eee3a7d --- /dev/null +++ b/src/qrcode/detector/alignment_pattern.rs @@ -0,0 +1,64 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +//RXingResultPoint + +use crate::RXingResultPoint; + +/** + *Encapsulates an alignment pattern, which are the smaller square patterns found in + * all but the simplest QR Codes.
+ * + * @author Sean Owen + */ +pub struct AlignmentPattern { + estimatedModuleSize: f32, + internal_result_point: RXingResultPoint, +} + +impl AlignmentPattern { + pub fn new(posX: f32, posY: f32, estimatedModuleSize: f32) -> Self { + Self { + estimatedModuleSize, + internal_result_point: RXingResultPoint { x: posX, y: posY }, + } + } + + /** + *Determines if this alignment pattern "about equals" an alignment pattern at the stated + * position and size -- meaning, it is at nearly the same center with nearly the same size.
+ */ + pub fn aboutEquals(&self, moduleSize: f32, i: f32, j: f32) -> bool { + if (i - self.internal_result_point.getY()).abs() <= moduleSize + && (j - self.internal_result_point.getX()).abs() <= moduleSize + { + let moduleSizeDiff = (moduleSize - self.estimatedModuleSize).abs(); + return moduleSizeDiff <= 1.0 || moduleSizeDiff <= self.estimatedModuleSize; + } + return false; + } + + /** + * Combines this object's current estimate of a finder pattern position and module size + * with a new estimate. It returns a new {@code FinderPattern} containing an average of the two. + */ + pub fn combineEstimate(&self, i: f32, j: f32, newModuleSize: f32) -> AlignmentPattern { + let combinedX = (self.internal_result_point.getX() + j) / 2.0; + let combinedY = (self.internal_result_point.getY() + i) / 2.0; + let combinedModuleSize = (self.estimatedModuleSize + newModuleSize) / 2.0; + AlignmentPattern::new(combinedX, combinedY, combinedModuleSize) + } +} diff --git a/src/qrcode/detector/finder_pattern_info.rs b/src/qrcode/detector/finder_pattern_info.rs index c16264f..3c615c8 100644 --- a/src/qrcode/detector/finder_pattern_info.rs +++ b/src/qrcode/detector/finder_pattern_info.rs @@ -30,10 +30,11 @@ pub struct FinderPatternInfo { impl FinderPatternInfo { pub fn new(patternCenters: [FinderPattern; 3]) -> Self { + let [a, b, c] = patternCenters; Self { - bottomLeft: patternCenters[0], - topLeft: patternCenters[1], - topRight: patternCenters[2], + bottomLeft: a, + topLeft: b, + topRight: c, } } diff --git a/src/qrcode/detector/mod.rs b/src/qrcode/detector/mod.rs index 2f000c7..8b2dfb8 100644 --- a/src/qrcode/detector/mod.rs +++ b/src/qrcode/detector/mod.rs @@ -1,5 +1,7 @@ mod finder_pattern_info; mod finder_pattern; +mod alignment_pattern; pub use finder_pattern_info::*; -pub use finder_pattern::*; \ No newline at end of file +pub use finder_pattern::*; +pub use alignment_pattern::*; \ No newline at end of file