mirror of
https://github.com/starovoid/rxing.git
synced 2026-07-26 04:12:34 +00:00
v0.1.4
This commit is contained in:
@@ -221,14 +221,23 @@ impl LuminanceSource for BufferedImageLuminanceSource {
|
||||
width: usize,
|
||||
height: usize,
|
||||
) -> Result<Box<dyn LuminanceSource>, crate::exceptions::Exceptions> {
|
||||
return Ok(Box::new(BufferedImageLuminanceSource::with_details(
|
||||
self.image
|
||||
// Ok(Box::new(BufferedImageLuminanceSource::with_details(
|
||||
// self.image
|
||||
// .crop_imm(left as u32, top as u32, width as u32, height as u32),
|
||||
// self.left + left as u32,
|
||||
// self.top + top as u32,
|
||||
// width,
|
||||
// height,
|
||||
// )))
|
||||
Ok(Box::new(Self {
|
||||
image: self
|
||||
.image
|
||||
.crop_imm(left as u32, top as u32, width as u32, height as u32),
|
||||
self.left + left as u32,
|
||||
self.top + top as u32,
|
||||
width,
|
||||
height,
|
||||
)));
|
||||
left: self.left + left as u32,
|
||||
top: self.top + top as u32,
|
||||
}))
|
||||
}
|
||||
|
||||
fn isRotateSupported(&self) -> bool {
|
||||
@@ -238,9 +247,17 @@ impl LuminanceSource for BufferedImageLuminanceSource {
|
||||
fn rotateCounterClockwise(
|
||||
&self,
|
||||
) -> Result<Box<dyn LuminanceSource>, crate::exceptions::Exceptions> {
|
||||
Ok(Box::new(BufferedImageLuminanceSource::new(
|
||||
self.image.rotate270(),
|
||||
)))
|
||||
// Ok(Box::new(BufferedImageLuminanceSource::new(
|
||||
// self.image.rotate270(),
|
||||
// )))
|
||||
let img = self.image.rotate270();
|
||||
Ok(Box::new(Self {
|
||||
width: img.width() as usize,
|
||||
height: img.height() as usize,
|
||||
image: img,
|
||||
left: 0,
|
||||
top: 0,
|
||||
}))
|
||||
}
|
||||
|
||||
fn rotateCounterClockwise45(
|
||||
@@ -255,6 +272,13 @@ impl LuminanceSource for BufferedImageLuminanceSource {
|
||||
|
||||
let new_img = DynamicImage::from(img);
|
||||
|
||||
Ok(Box::new(BufferedImageLuminanceSource::new(new_img)))
|
||||
// Ok(Box::new(BufferedImageLuminanceSource::new(new_img)))
|
||||
Ok(Box::new(Self {
|
||||
width: new_img.width() as usize,
|
||||
height: new_img.height() as usize,
|
||||
image: new_img,
|
||||
left: 0,
|
||||
top: 0,
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -196,11 +196,12 @@ impl BitArray {
|
||||
* Clears all bits (sets to false).
|
||||
*/
|
||||
pub fn clear(&mut self) {
|
||||
let max = self.bits.len();
|
||||
for i in 0..max {
|
||||
//for (int i = 0; i < max; i++) {
|
||||
self.bits[i] = 0;
|
||||
}
|
||||
// let max = self.bits.len();
|
||||
// for i in 0..max {
|
||||
// //for (int i = 0; i < max; i++) {
|
||||
// self.bits[i] = 0;
|
||||
// }
|
||||
self.bits.fill(0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -212,6 +212,10 @@ impl BitMatrix {
|
||||
return Ok(((self.bits[offset] >> (x & 0x1f)) & 1) != 0);
|
||||
}
|
||||
|
||||
pub fn check_in_bounds(&self, x: u32, y: u32) -> bool {
|
||||
(y as usize * self.row_size + (x as usize / 32)) > self.bits.len()
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Sets the given bit to true.</p>
|
||||
*
|
||||
@@ -281,11 +285,12 @@ impl BitMatrix {
|
||||
* Clears all bits (sets to false).
|
||||
*/
|
||||
pub fn clear(&mut self) {
|
||||
let max = self.bits.len();
|
||||
for i in 0..max {
|
||||
//for (int i = 0; i < max; i++) {
|
||||
self.bits[i] = 0;
|
||||
}
|
||||
// let max = self.bits.len();
|
||||
// for i in 0..max {
|
||||
// //for (int i = 0; i < max; i++) {
|
||||
// self.bits[i] = 0;
|
||||
// }
|
||||
self.bits.fill(0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -49,8 +49,7 @@ impl MultipleBarcodeReader for QRCodeMultiReader {
|
||||
hints: &crate::DecodingHintDictionary,
|
||||
) -> Result<Vec<crate::RXingResult>, crate::Exceptions> {
|
||||
let mut results = Vec::new();
|
||||
let detectorRXingResults =
|
||||
MultiDetector::new(image.getBlackMatrix()).detectMulti(hints)?;
|
||||
let detectorRXingResults = MultiDetector::new(image.getBlackMatrix()).detectMulti(hints)?;
|
||||
for detectorRXingResult in detectorRXingResults {
|
||||
let mut proc = || -> Result<(), Exceptions> {
|
||||
let decoderRXingResult = decoder::decoder::decode_bitmatrix_with_hints(
|
||||
|
||||
@@ -817,7 +817,7 @@ fn adjustCodewordStartColumn(
|
||||
return codewordStartColumn;
|
||||
}
|
||||
correctedStartColumn = (correctedStartColumn as i32 + increment) as u32;
|
||||
if let Err(_) = image.try_get(correctedStartColumn, imageRow) {
|
||||
if image.check_in_bounds(correctedStartColumn, imageRow) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ fn test_encode_decode(value: &str) {
|
||||
let byt_matrix = qr_code.getMatrix().as_ref().unwrap().clone();
|
||||
// dbg!(BitMatrix::from(byt_matrix.clone()).to_string());
|
||||
// let mut detector = Detector::new(make_larger(&byt_matrix.into(),5));
|
||||
let new_matrix : &BitMatrix = &byt_matrix.into();
|
||||
let new_matrix: &BitMatrix = &byt_matrix.into();
|
||||
let mut detector = Detector::new(new_matrix);
|
||||
let detected_points = detector.detect().expect("must detect");
|
||||
let decoded = decoder::decode_bitmatrix(detected_points.getBits()).expect("must decode");
|
||||
|
||||
Reference in New Issue
Block a user