update for shared state and improved performance

This commit is contained in:
Henry Schimke
2023-01-02 16:38:05 -06:00
parent 72f69dd6a0
commit 65f7c4d01b
46 changed files with 505 additions and 359 deletions

View File

@@ -16,6 +16,7 @@
*/
use std::{
cell::RefCell,
collections::HashMap,
fs::{read_dir, read_to_string, File},
io::Read,
@@ -178,9 +179,13 @@ impl<T: MultipleBarcodeReader + Reader> PDF417MultiImageSpanAbstractBlackBoxTest
let rotation: f32 = self.test_rxing_results.get(x).expect("ok").get_rotation();
let rotated_image = Self::rotate_image(&image, rotation);
let source = BufferedImageLuminanceSource::new(rotated_image);
let bitmap = BinaryBitmap::new(Rc::new(HybridBinarizer::new(Box::new(source))));
let mut bitmap = BinaryBitmap::new(Rc::new(RefCell::new(
HybridBinarizer::new(Box::new(source)),
)));
if let Ok(res) = Self::decode_pdf417(&bitmap, false, &mut self.barcode_reader) {
if let Ok(res) =
Self::decode_pdf417(&mut bitmap, false, &mut self.barcode_reader)
{
for r in res {
results.push(r);
}
@@ -383,7 +388,9 @@ impl<T: MultipleBarcodeReader + Reader> PDF417MultiImageSpanAbstractBlackBoxTest
let rotation = self.test_rxing_results.get(x).unwrap().get_rotation();
let rotated_image = Self::rotate_image(&image, rotation);
let source = BufferedImageLuminanceSource::new(rotated_image);
let bitmap = BinaryBitmap::new(Rc::new(HybridBinarizer::new(Box::new(source))));
let mut bitmap = BinaryBitmap::new(Rc::new(RefCell::new(HybridBinarizer::new(
Box::new(source),
))));
// if file_base_name == "15" {
// let mut f = File::create("test_file_output.txt").unwrap();
@@ -392,9 +399,13 @@ impl<T: MultipleBarcodeReader + Reader> PDF417MultiImageSpanAbstractBlackBoxTest
// Self::rotate_image(&image, rotation).save("test_image.png").unwrap();
// }
if let Ok(decoded) =
self.decode(&bitmap, rotation, &expected_text, &expected_metadata, false)
{
if let Ok(decoded) = self.decode(
&mut bitmap,
rotation,
&expected_text,
&expected_metadata,
false,
) {
if decoded {
passed_counts[x] += 1;
} else {
@@ -412,9 +423,13 @@ impl<T: MultipleBarcodeReader + Reader> PDF417MultiImageSpanAbstractBlackBoxTest
// } catch (ReaderException ignored) {
// log::fine(format!("could not read at rotation {}", rotation));
// }
if let Ok(decoded) =
self.decode(&bitmap, rotation, &expected_text, &expected_metadata, true)
{
if let Ok(decoded) = self.decode(
&mut bitmap,
rotation,
&expected_text,
&expected_metadata,
true,
) {
if decoded {
try_harder_counts[x] += 1;
} else {
@@ -550,7 +565,7 @@ impl<T: MultipleBarcodeReader + Reader> PDF417MultiImageSpanAbstractBlackBoxTest
fn decode(
&mut self,
source: &BinaryBitmap,
source: &mut BinaryBitmap,
rotation: f32,
expected_text: &str,
expected_metadata: &HashMap<RXingResultMetadataType, RXingResultMetadataValue>,
@@ -739,7 +754,7 @@ impl<T: MultipleBarcodeReader + Reader> PDF417MultiImageSpanAbstractBlackBoxTest
}
fn decode_pdf417(
source: &BinaryBitmap,
source: &mut BinaryBitmap,
try_harder: bool,
barcode_reader: &mut T,
) -> Result<Vec<RXingResult>, Exceptions> {