mirror of
https://github.com/starovoid/rxing.git
synced 2026-07-27 21:02:35 +00:00
update for shared state and improved performance
This commit is contained in:
@@ -24,16 +24,15 @@
|
||||
* http://www.piramidepse.com/
|
||||
*/
|
||||
|
||||
use std::rc::Rc;
|
||||
use std::{cell::RefCell, rc::Rc};
|
||||
|
||||
/**
|
||||
* @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es)
|
||||
* @author Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es)
|
||||
*/
|
||||
use crate::{
|
||||
common::{BitArray, GlobalHistogramBinarizer},
|
||||
oned::rss::expanded::RSSExpandedReader,
|
||||
BinaryBitmap, BufferedImageLuminanceSource,
|
||||
common::GlobalHistogramBinarizer, oned::rss::expanded::RSSExpandedReader, BinaryBitmap,
|
||||
BufferedImageLuminanceSource,
|
||||
};
|
||||
|
||||
use super::bit_array_builder;
|
||||
@@ -175,13 +174,11 @@ fn assertCorrectImage2binary(fileName: &str, expected: &str) {
|
||||
let path = format!("test_resources/blackbox/rssexpanded-1/{}", fileName);
|
||||
|
||||
let image = image::open(path).expect("file exists");
|
||||
let binaryMap = BinaryBitmap::new(Rc::new(GlobalHistogramBinarizer::new(Box::new(
|
||||
BufferedImageLuminanceSource::new(image),
|
||||
let mut binaryMap = BinaryBitmap::new(Rc::new(RefCell::new(GlobalHistogramBinarizer::new(
|
||||
Box::new(BufferedImageLuminanceSource::new(image)),
|
||||
))));
|
||||
let rowNumber = binaryMap.getHeight() / 2;
|
||||
let row = binaryMap
|
||||
.getBlackRow(rowNumber, &mut BitArray::new())
|
||||
.expect("row");
|
||||
let row = binaryMap.getBlackRow(rowNumber).expect("row");
|
||||
|
||||
// let pairs = Vec::new();
|
||||
// try {
|
||||
|
||||
@@ -29,11 +29,11 @@
|
||||
*
|
||||
*/
|
||||
|
||||
use std::{collections::HashMap, rc::Rc};
|
||||
use std::{cell::RefCell, collections::HashMap, rc::Rc};
|
||||
|
||||
use crate::{
|
||||
client::result::{ExpandedProductParsedRXingResult, ParsedClientResult},
|
||||
common::{BitArray, GlobalHistogramBinarizer},
|
||||
common::GlobalHistogramBinarizer,
|
||||
oned::{rss::expanded::RSSExpandedReader, OneDReader},
|
||||
BarcodeFormat, BinaryBitmap, BufferedImageLuminanceSource,
|
||||
};
|
||||
@@ -71,13 +71,11 @@ fn assertCorrectImage2result(fileName: &str, expected: ExpandedProductParsedRXin
|
||||
let path = format!("test_resources/blackbox/rssexpanded-1/{}", fileName);
|
||||
|
||||
let image = image::open(path).expect("image must exist");
|
||||
let binaryMap = BinaryBitmap::new(Rc::new(GlobalHistogramBinarizer::new(Box::new(
|
||||
BufferedImageLuminanceSource::new(image),
|
||||
let mut binaryMap = BinaryBitmap::new(Rc::new(RefCell::new(GlobalHistogramBinarizer::new(
|
||||
Box::new(BufferedImageLuminanceSource::new(image)),
|
||||
))));
|
||||
let rowNumber = binaryMap.getHeight() as usize / 2;
|
||||
let row = binaryMap
|
||||
.getBlackRow(rowNumber, &mut BitArray::new())
|
||||
.expect("get row");
|
||||
let row = binaryMap.getBlackRow(rowNumber).expect("get row");
|
||||
|
||||
let mut rssExpandedReader = RSSExpandedReader::new();
|
||||
let theRXingResult = rssExpandedReader
|
||||
|
||||
@@ -24,10 +24,10 @@
|
||||
* http://www.piramidepse.com/
|
||||
*/
|
||||
|
||||
use std::{collections::HashMap, rc::Rc};
|
||||
use std::{cell::RefCell, collections::HashMap, rc::Rc};
|
||||
|
||||
use crate::{
|
||||
common::{BitArray, GlobalHistogramBinarizer},
|
||||
common::GlobalHistogramBinarizer,
|
||||
oned::{rss::expanded::RSSExpandedReader, OneDReader},
|
||||
BarcodeFormat, BinaryBitmap, BufferedImageLuminanceSource,
|
||||
};
|
||||
@@ -184,13 +184,11 @@ fn assertCorrectImage2string(fileName: &str, expected: &str) {
|
||||
let path = format!("test_resources/blackbox/rssexpanded-1/{}", fileName);
|
||||
|
||||
let image = image::open(path).expect("load image");
|
||||
let binaryMap = BinaryBitmap::new(Rc::new(GlobalHistogramBinarizer::new(Box::new(
|
||||
BufferedImageLuminanceSource::new(image),
|
||||
let mut binaryMap = BinaryBitmap::new(Rc::new(RefCell::new(GlobalHistogramBinarizer::new(
|
||||
Box::new(BufferedImageLuminanceSource::new(image)),
|
||||
))));
|
||||
let rowNumber = binaryMap.getHeight() / 2;
|
||||
let row = binaryMap
|
||||
.getBlackRow(rowNumber, &mut BitArray::new())
|
||||
.expect("get row");
|
||||
let row = binaryMap.getBlackRow(rowNumber).expect("get row");
|
||||
|
||||
let mut rssExpandedReader = RSSExpandedReader::new();
|
||||
let result = rssExpandedReader
|
||||
|
||||
@@ -24,10 +24,10 @@
|
||||
* http://www.piramidepse.com/
|
||||
*/
|
||||
|
||||
use std::rc::Rc;
|
||||
use std::{cell::RefCell, rc::Rc};
|
||||
|
||||
use crate::{
|
||||
common::{BitArray, GlobalHistogramBinarizer},
|
||||
common::GlobalHistogramBinarizer,
|
||||
oned::rss::{DataCharacterTrait, FinderPattern},
|
||||
BinaryBitmap, BufferedImageLuminanceSource,
|
||||
};
|
||||
@@ -42,13 +42,11 @@ use super::RSSExpandedReader;
|
||||
#[test]
|
||||
fn testFindFinderPatterns() {
|
||||
let image = readImage("2.png");
|
||||
let binaryMap = BinaryBitmap::new(Rc::new(GlobalHistogramBinarizer::new(Box::new(
|
||||
BufferedImageLuminanceSource::new(image),
|
||||
let mut binaryMap = BinaryBitmap::new(Rc::new(RefCell::new(GlobalHistogramBinarizer::new(
|
||||
Box::new(BufferedImageLuminanceSource::new(image)),
|
||||
))));
|
||||
let rowNumber = binaryMap.getHeight() as u32 / 2;
|
||||
let row = binaryMap
|
||||
.getBlackRow(rowNumber as usize, &mut BitArray::new())
|
||||
.expect("ok");
|
||||
let row = binaryMap.getBlackRow(rowNumber as usize).expect("ok");
|
||||
let mut previousPairs = Vec::new(); //new ArrayList<>();
|
||||
|
||||
let mut rssExpandedReader = RSSExpandedReader::new();
|
||||
@@ -90,13 +88,11 @@ fn testFindFinderPatterns() {
|
||||
#[test]
|
||||
fn testRetrieveNextPairPatterns() {
|
||||
let image = readImage("3.png");
|
||||
let binaryMap = BinaryBitmap::new(Rc::new(GlobalHistogramBinarizer::new(Box::new(
|
||||
BufferedImageLuminanceSource::new(image),
|
||||
let mut binaryMap = BinaryBitmap::new(Rc::new(RefCell::new(GlobalHistogramBinarizer::new(
|
||||
Box::new(BufferedImageLuminanceSource::new(image)),
|
||||
))));
|
||||
let rowNumber = binaryMap.getHeight() as u32 / 2;
|
||||
let row = binaryMap
|
||||
.getBlackRow(rowNumber as usize, &mut BitArray::new())
|
||||
.expect("create");
|
||||
let row = binaryMap.getBlackRow(rowNumber as usize).expect("create");
|
||||
let mut previousPairs = Vec::new(); //new ArrayList<>();
|
||||
|
||||
let mut rssExpandedReader = RSSExpandedReader::new();
|
||||
@@ -120,11 +116,11 @@ fn testRetrieveNextPairPatterns() {
|
||||
#[test]
|
||||
fn testDecodeCheckCharacter() {
|
||||
let image = readImage("3.png");
|
||||
let binaryMap = BinaryBitmap::new(Rc::new(GlobalHistogramBinarizer::new(Box::new(
|
||||
BufferedImageLuminanceSource::new(image.clone()),
|
||||
let mut binaryMap = BinaryBitmap::new(Rc::new(RefCell::new(GlobalHistogramBinarizer::new(
|
||||
Box::new(BufferedImageLuminanceSource::new(image.clone())),
|
||||
))));
|
||||
let row = binaryMap
|
||||
.getBlackRow(binaryMap.getHeight() / 2, &mut BitArray::new())
|
||||
.getBlackRow(binaryMap.getHeight() / 2)
|
||||
.expect("create");
|
||||
|
||||
let startEnd = [145, 243]; //image pixels where the A1 pattern starts (at 124) and ends (at 214)
|
||||
@@ -148,11 +144,11 @@ fn testDecodeCheckCharacter() {
|
||||
#[test]
|
||||
fn testDecodeDataCharacter() {
|
||||
let image = readImage("3.png");
|
||||
let binaryMap = BinaryBitmap::new(Rc::new(GlobalHistogramBinarizer::new(Box::new(
|
||||
BufferedImageLuminanceSource::new(image.clone()),
|
||||
let mut binaryMap = BinaryBitmap::new(Rc::new(RefCell::new(GlobalHistogramBinarizer::new(
|
||||
Box::new(BufferedImageLuminanceSource::new(image.clone())),
|
||||
))));
|
||||
let row = binaryMap
|
||||
.getBlackRow(binaryMap.getHeight() / 2, &mut BitArray::new())
|
||||
.getBlackRow(binaryMap.getHeight() / 2)
|
||||
.expect("create");
|
||||
|
||||
let startEnd = [145, 243]; //image pixels where the A1 pattern starts (at 124) and ends (at 214)
|
||||
|
||||
@@ -179,14 +179,17 @@ impl OneDReader for RSSExpandedReader {
|
||||
}
|
||||
}
|
||||
impl Reader for RSSExpandedReader {
|
||||
fn decode(&mut self, image: &crate::BinaryBitmap) -> Result<crate::RXingResult, Exceptions> {
|
||||
fn decode(
|
||||
&mut self,
|
||||
image: &mut crate::BinaryBitmap,
|
||||
) -> Result<crate::RXingResult, Exceptions> {
|
||||
self.decode_with_hints(image, &HashMap::new())
|
||||
}
|
||||
|
||||
// Note that we don't try rotation without the try harder flag, even if rotation was supported.
|
||||
fn decode_with_hints(
|
||||
&mut self,
|
||||
image: &crate::BinaryBitmap,
|
||||
image: &mut crate::BinaryBitmap,
|
||||
hints: &DecodingHintDictionary,
|
||||
) -> Result<crate::RXingResult, Exceptions> {
|
||||
if let Ok(res) = self.doDecode(image, hints) {
|
||||
@@ -194,8 +197,8 @@ impl Reader for RSSExpandedReader {
|
||||
} else {
|
||||
let tryHarder = hints.contains_key(&DecodeHintType::TRY_HARDER);
|
||||
if tryHarder && image.isRotateSupported() {
|
||||
let rotatedImage = image.rotateCounterClockwise();
|
||||
let mut result = self.doDecode(&rotatedImage, hints)?;
|
||||
let mut rotatedImage = image.rotateCounterClockwise();
|
||||
let mut result = self.doDecode(&mut rotatedImage, hints)?;
|
||||
// Record that we found it rotated 90 degrees CCW / 270 degrees CW
|
||||
let metadata = result.getRXingResultMetadata();
|
||||
let mut orientation = 270;
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
* http://www.piramidepse.com/
|
||||
*/
|
||||
|
||||
use crate::{common::BitArray, oned::rss::expanded::ExpandedPair, Exceptions, Reader};
|
||||
use crate::{oned::rss::expanded::ExpandedPair, Exceptions, Reader};
|
||||
|
||||
use super::{test_case_util, RSSExpandedReader};
|
||||
|
||||
@@ -36,12 +36,10 @@ use super::{test_case_util, RSSExpandedReader};
|
||||
fn testDecodingRowByRow() {
|
||||
let mut rssExpandedReader = RSSExpandedReader::new();
|
||||
|
||||
let binaryMap = test_case_util::getBinaryBitmap("1000.png");
|
||||
let mut binaryMap = test_case_util::getBinaryBitmap("1000.png");
|
||||
|
||||
let firstRowNumber = binaryMap.getHeight() / 3;
|
||||
let firstRow = binaryMap
|
||||
.getBlackRow(firstRowNumber, &mut BitArray::new())
|
||||
.expect("get row");
|
||||
let firstRow = binaryMap.getBlackRow(firstRowNumber).expect("get row");
|
||||
|
||||
// let tester = ;
|
||||
|
||||
@@ -74,9 +72,7 @@ fn testDecodingRowByRow() {
|
||||
.getStartEndMut()[1] = 0;
|
||||
|
||||
let secondRowNumber = 2 * binaryMap.getHeight() / 3;
|
||||
let mut secondRow = binaryMap
|
||||
.getBlackRow(secondRowNumber, &mut BitArray::new())
|
||||
.expect("get row");
|
||||
let mut secondRow = binaryMap.getBlackRow(secondRowNumber).expect("get row");
|
||||
secondRow.reverse();
|
||||
|
||||
let totalPairs = rssExpandedReader
|
||||
@@ -91,8 +87,8 @@ fn testDecodingRowByRow() {
|
||||
fn testCompleteDecode() {
|
||||
let mut rssExpandedReader = RSSExpandedReader::new();
|
||||
|
||||
let binaryMap = test_case_util::getBinaryBitmap("1000.png");
|
||||
let mut binaryMap = test_case_util::getBinaryBitmap("1000.png");
|
||||
|
||||
let result = rssExpandedReader.decode(&binaryMap).expect("decode");
|
||||
let result = rssExpandedReader.decode(&mut binaryMap).expect("decode");
|
||||
assert_eq!("(01)98898765432106(3202)012345(15)991231", result.getText());
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
* http://www.piramidepse.com/
|
||||
*/
|
||||
|
||||
use std::rc::Rc;
|
||||
use std::{cell::RefCell, rc::Rc};
|
||||
|
||||
use image::DynamicImage;
|
||||
|
||||
@@ -40,8 +40,8 @@ fn getBufferedImage(fileName: &str) -> DynamicImage {
|
||||
|
||||
pub(crate) fn getBinaryBitmap(fileName: &str) -> BinaryBitmap {
|
||||
let bufferedImage = getBufferedImage(fileName);
|
||||
let binaryMap = BinaryBitmap::new(Rc::new(GlobalHistogramBinarizer::new(Box::new(
|
||||
BufferedImageLuminanceSource::new(bufferedImage),
|
||||
let binaryMap = BinaryBitmap::new(Rc::new(RefCell::new(GlobalHistogramBinarizer::new(
|
||||
Box::new(BufferedImageLuminanceSource::new(bufferedImage)),
|
||||
))));
|
||||
|
||||
binaryMap
|
||||
|
||||
Reference in New Issue
Block a user