1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
//! A small QR code generation project I made to dip my toes into rust again
//! after several years of absence. I was always curious on how QR codes worked
//! and it was a pretty good project to explore rust with. I followed an
//! [excellent tutorial](https://www.thonky.com/qr-code-tutorial/).
//!
//! This library supports strings encoded in numeric, alphanumeric and byte mode.
//! It supports all versions, meaning different sizes, of a standard QR code with
//! the different error correction levels.
//!
//! # QR code as string output
//!
//! ```
//! extern crate rqr;
//! use rqr::{Qr, StringRenderer};
//!
//! fn main() {
//!     let qr = Qr::new("HELLO WORLD").unwrap();
//!     let s = StringRenderer::new().render(&qr);
//!     println!("{}", s);
//! }
//! ```
//!
//! # SVG generation
//!
//! ```
//! use rqr::{Qr, SvgRenderer, Color, ECLevel};
//!
//! fn main() {
//!     let qr = Qr::with_ecl("HELLO WORLD", ECLevel::Q).unwrap();
//!     let s = SvgRenderer::new()
//!         .light_module(Color::new(229, 189, 227))
//!         .dark_module(Color::new(119, 0, 0))
//!         .dimensions(200, 200)
//!         .render(&qr);
//!     println!("{}", s);
//! }
//! ```
//!
//! # Override inferred settings
//!
//! If not provided the version and encoding modes will be inferred to fit the
//! encoded message. It's possible to override these and others:
//!
//! ```
//! use rqr::{QrBuilder, ECLevel, Version, Mask, Mode};
//!
//! let qr = QrBuilder::new()
//!     .ecl(ECLevel::L)
//!     .version(Version::new(3))
//!     .mask(Mask::new(0))
//!     .mode(Mode::Alphanumeric)
//!     .into("1234567890")
//!     .unwrap();
//! ```
//!
//! More fine grained control is provided by the builder and the underlying matrix.

pub mod builder;
pub use builder::*;

pub mod data;
pub use data::*;

pub mod ec;
pub use ec::*;

pub mod info;
pub use info::*;

pub mod mask;
pub use mask::*;

pub mod matrix;
pub use matrix::{Module, Matrix};

pub mod mode;
pub use mode::Mode;

pub mod qr;
pub use qr::Qr;

pub mod render;
pub use render::*;

pub mod version;
pub use version::Version;