mod decode;
mod encode;
mod matrix;
mod tables;
pub use decode::MicroQrDecoder;
pub use encode::MicroQrEncoder;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub enum MicroVersion {
M1,
M2,
M3,
M4,
}
impl MicroVersion {
pub fn number(self) -> u8 {
match self {
MicroVersion::M1 => 1,
MicroVersion::M2 => 2,
MicroVersion::M3 => 3,
MicroVersion::M4 => 4,
}
}
pub fn from_number(n: u8) -> Option<Self> {
match n {
1 => Some(MicroVersion::M1),
2 => Some(MicroVersion::M2),
3 => Some(MicroVersion::M3),
4 => Some(MicroVersion::M4),
_ => None,
}
}
pub fn size(self) -> usize {
11 + 2 * (self.number() as usize - 1)
}
pub fn from_size(size: usize) -> Option<Self> {
match size {
11 => Some(MicroVersion::M1),
13 => Some(MicroVersion::M2),
15 => Some(MicroVersion::M3),
17 => Some(MicroVersion::M4),
_ => None,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub enum MicroEcLevel {
Detection,
L,
M,
Q,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct MicroMask(u8);
impl MicroMask {
pub fn new(m: u8) -> Option<Self> {
(m <= 3).then_some(MicroMask(m))
}
pub fn index(self) -> u8 {
self.0
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct MicroQrMeta {
pub version: MicroVersion,
pub ec_level: MicroEcLevel,
pub mask: MicroMask,
}