mirror of
https://github.com/starovoid/rxing.git
synced 2026-07-26 12:22:34 +00:00
backport changes from c++ for datamatrix
This commit is contained in:
@@ -139,16 +139,18 @@ pub trait BitMatrixCursor {
|
||||
ret
|
||||
}
|
||||
|
||||
fn countEdges(&mut self, range: Option<i32>) -> i32 {
|
||||
let mut range = if let Some(r) = range { r } else { 0 };
|
||||
fn countEdges(&mut self, range: i32) -> i32 {
|
||||
let mut res = 0;
|
||||
let mut range = range;
|
||||
|
||||
let mut steps = self.stepToEdge(Some(1), Some(range), None);
|
||||
let mut steps;
|
||||
|
||||
while steps > 0 {
|
||||
while {
|
||||
steps = if range == 0 { 0 } else {self.stepToEdge(Some(1), Some(range), None)};
|
||||
steps > 0
|
||||
} {
|
||||
range -= steps;
|
||||
res += 1;
|
||||
steps = self.stepToEdge(Some(1), Some(range), None);
|
||||
}
|
||||
|
||||
res
|
||||
|
||||
@@ -326,6 +326,10 @@ impl<'a> EdgeTracer<'_> {
|
||||
return Ok(false);
|
||||
}
|
||||
|
||||
// re-evaluate line with all the points up to here before projecting
|
||||
if (!line.evaluate_max_distance(Some(1.5), None))
|
||||
{return Ok(false);}
|
||||
|
||||
let mut np = line.project(&self.p);
|
||||
// make sure we are making progress even when back-projecting:
|
||||
// consider a 90deg corner, rotated 45deg. we step away perpendicular from the line and get
|
||||
|
||||
Reference in New Issue
Block a user