just let fast_qr handle the mode and version
This commit is contained in:
parent
ef468dcc6d
commit
3d8b8040ab
3 changed files with 2 additions and 53 deletions
|
@ -1,3 +1 @@
|
|||
pub mod qr;
|
||||
|
||||
pub use qr::Mode;
|
||||
|
|
15
src/main.rs
15
src/main.rs
|
@ -5,13 +5,12 @@ use eframe::egui;
|
|||
use egui_extras::RetainedImage;
|
||||
use fast_qr::convert::image::ImageBuilder;
|
||||
|
||||
use godiva::qr::*;
|
||||
|
||||
#[derive(Parser, Debug)]
|
||||
#[clap(author, version, trailing_var_arg = true)]
|
||||
struct Cli {
|
||||
#[clap(long, short, help = "File to expose")]
|
||||
pub file: Option<OsString>,
|
||||
#[clap(help = "all remaining arguments treated as a string; ignored if `-f` is given")]
|
||||
text: Vec<String>,
|
||||
}
|
||||
|
||||
|
@ -42,30 +41,20 @@ fn main() -> Result<(), eframe::Error> {
|
|||
eframe::run_native(
|
||||
"Show an image with eframe/egui",
|
||||
options,
|
||||
Box::new(|_cc| {
|
||||
Box::new(Flasher {
|
||||
content,
|
||||
mode: Mode::Ascii,
|
||||
})
|
||||
}),
|
||||
Box::new(|_cc| Box::new(Flasher { content })),
|
||||
)
|
||||
}
|
||||
|
||||
struct Flasher {
|
||||
pub content: Vec<u8>,
|
||||
pub mode: Mode,
|
||||
}
|
||||
|
||||
impl eframe::App for Flasher {
|
||||
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
|
||||
egui::CentralPanel::default().show(ctx, |ui| {
|
||||
let heading_text = String::from_utf8(self.content.clone()).unwrap();
|
||||
let len = heading_text.len();
|
||||
ui.heading(heading_text);
|
||||
let size = get_size(len, self.mode);
|
||||
let version = get_version(size, fast_qr::ECL::H);
|
||||
let qr = fast_qr::QRBuilder::new(self.content.clone())
|
||||
.version(version)
|
||||
.build()
|
||||
.unwrap();
|
||||
let bytes = ImageBuilder::default()
|
||||
|
|
38
src/qr.rs
38
src/qr.rs
|
@ -1,38 +0,0 @@
|
|||
use fast_qr::ECL;
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
|
||||
pub enum Mode {
|
||||
Ascii,
|
||||
Binary,
|
||||
}
|
||||
|
||||
pub fn get_size(len: usize, mode: Mode) -> usize {
|
||||
if mode == Mode::Ascii {
|
||||
// alphanumeric mode is only 5.5 bits per character, so 5.5 / 8 = 0.6875
|
||||
(len as f64 * 0.6875).ceil() as usize
|
||||
} else {
|
||||
len
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_version(size: usize, ecl: ECL) -> fast_qr::Version {
|
||||
use fast_qr::Version::*;
|
||||
let ecl = match ecl {
|
||||
ECL::L => 0.7,
|
||||
ECL::M => 0.15,
|
||||
ECL::Q => 0.25,
|
||||
ECL::H => 0.30,
|
||||
};
|
||||
|
||||
let size = (size as f64 / ecl) as usize;
|
||||
|
||||
match size {
|
||||
0..=7 => V01,
|
||||
8..=14 => V02,
|
||||
15..=24 => V03,
|
||||
25..=78 => V04,
|
||||
|
||||
//
|
||||
_ => V40,
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue