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
//! The core traits every symbology plugs into: [`Detect`], [`Analyze`], [`Decode`]
//! and [`Encode`]. They mirror the two-stage live pipeline (locate cheaply, then
//! decode) while also supporting one-shot still-image decoding.
use crateResult;
use crateGrayFrame;
use crateEncoding;
use crate;
use crateSymbol;
/// Fast per-frame detection: locate and roughly classify candidate codes without
/// fully decoding them. Implementations should be cheap enough to run on every
/// video frame and should consult `hints` to reuse prior-frame results.
/// Heavier analysis: fully decode a located [`Candidate`] into a [`Symbol`].
/// Decode an already-sampled module grid or linear pattern into a [`Symbol`].
///
/// This is the structural half of decoding — it operates on clean module data
/// (`Encoding`) rather than pixels, and is what round-trip tests exercise against
/// the encoder. Image sampling lives in [`Analyze`].
/// Encode a [`Symbol`] into abstract module geometry.