/*
* Copyright 2007 ZXing authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// package com::google::zxing::common;
/**
*
Encapsulates the result of decoding a matrix of bits. This typically
* applies to 2D barcode formats. For now it contains the raw bytes obtained,
* as well as a String interpretation of those bytes, if applicable.
*
* @author Sean Owen
*/
pub struct DecoderResult {
let raw_bytes: Vec;
let num_bits: i32;
let text: String;
let byte_segments: List>;
let ec_level: String;
let errors_corrected: Integer;
let erasures: Integer;
let other: Object;
let structured_append_parity: i32;
let structured_append_sequence_number: i32;
let symbology_modifier: i32;
}
impl DecoderResult {
pub fn new( raw_bytes: &Vec, text: &String, byte_segments: &List>, ec_level: &String) -> DecoderResult {
this(&raw_bytes, &text, &byte_segments, &ec_level, -1, -1, 0);
}
pub fn new( raw_bytes: &Vec, text: &String, byte_segments: &List>, ec_level: &String, symbology_modifier: i32) -> DecoderResult {
this(&raw_bytes, &text, &byte_segments, &ec_level, -1, -1, symbology_modifier);
}
pub fn new( raw_bytes: &Vec, text: &String, byte_segments: &List>, ec_level: &String, sa_sequence: i32, sa_parity: i32) -> DecoderResult {
this(&raw_bytes, &text, &byte_segments, &ec_level, sa_sequence, sa_parity, 0);
}
pub fn new( raw_bytes: &Vec, text: &String, byte_segments: &List>, ec_level: &String, sa_sequence: i32, sa_parity: i32, symbology_modifier: i32) -> DecoderResult {
let .rawBytes = raw_bytes;
let .numBits = if raw_bytes == null { 0 } else { 8 * raw_bytes.len() };
let .text = text;
let .byteSegments = byte_segments;
let .ecLevel = ec_level;
let .structuredAppendParity = sa_parity;
let .structuredAppendSequenceNumber = sa_sequence;
let .symbologyModifier = symbology_modifier;
}
/**
* @return raw bytes representing the result, or {@code null} if not applicable
*/
pub fn get_raw_bytes(&self) -> Vec {
return self.raw_bytes;
}
/**
* @return how many bits of {@link #getRawBytes()} are valid; typically 8 times its length
* @since 3.3.0
*/
pub fn get_num_bits(&self) -> i32 {
return self.num_bits;
}
/**
* @param numBits overrides the number of bits that are valid in {@link #getRawBytes()}
* @since 3.3.0
*/
pub fn set_num_bits(&self, num_bits: i32) {
self.numBits = num_bits;
}
/**
* @return text representation of the result
*/
pub fn get_text(&self) -> String {
return self.text;
}
/**
* @return list of byte segments in the result, or {@code null} if not applicable
*/
pub fn get_byte_segments(&self) -> List> {
return self.byte_segments;
}
/**
* @return name of error correction level used, or {@code null} if not applicable
*/
pub fn get_e_c_level(&self) -> String {
return self.ec_level;
}
/**
* @return number of errors corrected, or {@code null} if not applicable
*/
pub fn get_errors_corrected(&self) -> Integer {
return self.errors_corrected;
}
pub fn set_errors_corrected(&self, errors_corrected: &Integer) {
self.errorsCorrected = errors_corrected;
}
/**
* @return number of erasures corrected, or {@code null} if not applicable
*/
pub fn get_erasures(&self) -> Integer {
return self.erasures;
}
pub fn set_erasures(&self, erasures: &Integer) {
self.erasures = erasures;
}
/**
* @return arbitrary additional metadata
*/
pub fn get_other(&self) -> Object {
return self.other;
}
pub fn set_other(&self, other: &Object) {
self.other = other;
}
pub fn has_structured_append(&self) -> bool {
return self.structured_append_parity >= 0 && self.structured_append_sequence_number >= 0;
}
pub fn get_structured_append_parity(&self) -> i32 {
return self.structured_append_parity;
}
pub fn get_structured_append_sequence_number(&self) -> i32 {
return self.structured_append_sequence_number;
}
pub fn get_symbology_modifier(&self) -> i32 {
return self.symbology_modifier;
}
}