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
//! QR code generation library.
//!
//! **Tuv** is named for the three letters after QRS in the alphabet — a nod to QR
//! codes and the sequential nature of encoding.
//!
//! # Quick start
//!
//! ```
//! use tuv::QRCode;
//!
//! let qr = QRCode::from("Hello, world!").generate().unwrap();
//! let svg = qr.to_svg(true);
//! let png = qr.to_png(300, true);
//! # let _ = (svg, png);
//! ```
//!
//! # Defaults
//!
//! With no builder options, [`QRCode::from`](QRCode::from) auto-selects the smallest
//! Normal QR version and the lowest ECC level (L → M → Q → H) that fit the input.
//! Use [`QRCodeBuilder::with_ecc`](QRCodeBuilder::with_ecc) or
//! [`QRCodeBuilder::with_version`](QRCodeBuilder::with_version) to fix either field.
//!
//! # Text vs bytes vs Kanji
//!
//! [`QRCode::from`] accepts UTF-8 strings and encodes them in **byte mode** (one byte
//! per character code unit). It does **not** switch to Kanji mode for Japanese text.
//!
//! True **Kanji mode** (Shift JIS double-byte characters) requires raw Shift JIS bytes:
//! use [`QRCode::from_bytes`] or [`Bits::push_kanji_data`](crate::bits::Bits::push_kanji_data)
//! on the low-level [`Bits`](crate::bits::Bits) API.
//!
//! # Architecture
//!
//! ```text
//! Input -> Mode Select -> Reed-Solomon ECC -> Block Interleave
//! -> Function Patterns -> Matrix -> Data Placement -> Masking
//! -> Format Info -> SVG / PNG
//! ```
pub use ;
pub use ECCLevel;
pub use ;
pub use ;
pub use ;