Expose the maximum length for a EC-level via Bits::max_len. Fixes #3.
This commit is contained in:
parent
673ee09ef9
commit
5a7a1c65f0
10
src/bits.rs
10
src/bits.rs
|
@ -82,7 +82,7 @@ impl Bits {
|
|||
self.data
|
||||
}
|
||||
|
||||
/// Total number of bits.
|
||||
/// Total number of bits currently pushed.
|
||||
pub fn len(&self) -> usize {
|
||||
if self.bit_offset == 0 {
|
||||
self.data.len() * 8
|
||||
|
@ -91,6 +91,12 @@ impl Bits {
|
|||
}
|
||||
}
|
||||
|
||||
/// The maximum number of bits allowed by the provided QR code version and
|
||||
/// error correction level.
|
||||
pub fn max_len(&self, ec_level: EcLevel) -> QrResult<usize> {
|
||||
self.version.fetch(ec_level, &DATA_LENGTHS)
|
||||
}
|
||||
|
||||
/// Version of the QR code.
|
||||
pub fn version(&self) -> Version {
|
||||
self.version
|
||||
|
@ -657,7 +663,7 @@ impl Bits {
|
|||
};
|
||||
|
||||
let cur_length = self.len();
|
||||
let data_length = try!(self.version.fetch(ec_level, &DATA_LENGTHS));
|
||||
let data_length = try!(self.max_len(ec_level));
|
||||
if cur_length > data_length {
|
||||
return Err(QrError::DataTooLong);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue