minimal eci passes with priority encoder

This commit is contained in:
Henry Schimke
2022-11-05 12:21:10 -05:00
parent a4c640822c
commit 128e8f8fe9

View File

@@ -221,11 +221,7 @@ impl MinimalECIInput {
} }
bytes_hld bytes_hld
} else { } else {
Self::encodeMinimally( Self::encodeMinimally(stringToEncodeInput, &encoderSet, fnc1)
stringToEncodeInput,
&encoderSet,
fnc1
)
}; };
Self { Self {
@@ -286,18 +282,22 @@ impl MinimalECIInput {
let mut start = 0; let mut start = 0;
let mut end = encoderSet.len(); let mut end = encoderSet.len();
if let Some(fnc1) = fnc1 { //if let Some(fnc1) = fnc1 {
if encoderSet.getPriorityEncoderIndex().is_some() if encoderSet.getPriorityEncoderIndex().is_some()
&& (ch.chars().nth(0).unwrap() == fnc1.chars().nth(1).unwrap() && (( fnc1.is_some() && ch.chars().nth(0).unwrap() == fnc1.as_ref().unwrap().chars().nth(0).unwrap())
|| encoderSet.canEncode(ch, encoderSet.getPriorityEncoderIndex().unwrap())) || encoderSet.canEncode(ch, encoderSet.getPriorityEncoderIndex().unwrap()))
{ {
start = encoderSet.getPriorityEncoderIndex().unwrap(); start = encoderSet.getPriorityEncoderIndex().unwrap();
end = start + 1; end = start + 1;
}} }
//}
for i in start..end { for i in start..end {
// for (int i = start; i < end; i++) { // for (int i = start; i < end; i++) {
if (fnc1.is_some() && ch.chars().nth(0).unwrap() == fnc1.as_ref().unwrap().chars().nth(0).unwrap()) || encoderSet.canEncode(ch, i) { if (fnc1.is_some()
&& ch.chars().nth(0).unwrap() == fnc1.as_ref().unwrap().chars().nth(0).unwrap())
|| encoderSet.canEncode(ch, i)
{
Self::addEdge( Self::addEdge(
edges, edges,
from + 1, from + 1,
@@ -379,7 +379,10 @@ impl MinimalECIInput {
// 0..0, // 0..0,
// [256 as u16 + encoderSet.getECIValue(c.encoderIndex) as u16], // [256 as u16 + encoderSet.getECIValue(c.encoderIndex) as u16],
// ); // );
intsAL.insert(0, 256 as u16 + encoderSet.getECIValue(c.encoderIndex) as u16); intsAL.insert(
0,
256 as u16 + encoderSet.getECIValue(c.encoderIndex) as u16,
);
} }
current = c.previous.clone(); current = c.previous.clone();
} }
@@ -422,7 +425,7 @@ impl InputEdge {
size += prev.cachedTotalSize; size += prev.cachedTotalSize;
Self { Self {
c: if fnc1.is_some() && &c == fnc1.as_ref().unwrap() { c: if fnc1.is_some() && &c == fnc1.as_ref().unwrap() {
String::from("\u{1000}") String::from("\u{1000}")
} else { } else {
String::from(c) String::from(c)
@@ -438,7 +441,7 @@ impl InputEdge {
} }
Self { Self {
c: if fnc1.is_some() && &c == fnc1.as_ref().unwrap() { c: if fnc1.is_some() && &c == fnc1.as_ref().unwrap() {
String::from("\u{1000}") String::from("\u{1000}")
} else { } else {
String::from(c) String::from(c)