use crate::types::{ErrorCorrectionLevel, Mode};
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct QROptions {
pub type_number: u8,
pub error_correction_level: ErrorCorrectionLevel,
pub mode: Option<Mode>,
}
impl Default for QROptions {
fn default() -> Self {
Self {
type_number: 0, error_correction_level: ErrorCorrectionLevel::Q,
mode: None, }
}
}
impl QROptions {
pub fn new() -> Self {
Self::default()
}
pub fn with_type_number(mut self, type_number: u8) -> Self {
self.type_number = type_number.min(40);
self
}
pub fn with_error_correction_level(mut self, level: ErrorCorrectionLevel) -> Self {
self.error_correction_level = level;
self
}
pub fn with_mode(mut self, mode: Mode) -> Self {
self.mode = Some(mode);
self
}
}