Viewing is open to everyone. Downloading and starring need a GitHub sign-in. Sign in with GitHub

README.md

v0.1.0-build.85 Latest Commit ede38f5

Size
1.8 KB
Lines
21
Language
markdown
SHA-256
d14fc3ed135a…
View on GitHub

Sign in with GitHub to download. Each download is recorded with your GitHub username.

1# Core source layout
2
3The core is C++20 behind a C ABI (`include/ckey/ckey.h`, `include/ckey/telemetry.h`). It is built as separate libraries, so an app links only what it uses (specification §2.1, §6 and §9.2).
4
5| Library | Translation unit | Contents | Depends on |
6|---|---|---|---|
7| `ckey_codec` | `ckey_codec.cpp` | encode and decode codewords for every profile (framing, CRC-32C, Reed–Solomon), capacities, version queries | nothing |
8| `ckey_scan` | `ckey_scan.cpp` | grayscale image decoding, calibration scores, full-frame localization | `ckey_codec` |
9| `ckey_render` | `ckey_render.cpp` | styles and their checks, canonical geometry, SVG, direct raster, PNG, PDF, print | nothing |
10| `ckey_telemetry` | `telemetry.cpp` | optional aggregate counters and batches; no networking | nothing |
11| `ckey_core` | (interface) | `ckey_codec` + `ckey_scan` + `ckey_render` | |
12
13Each library's translation unit is the shared internals plus its own public functions:
14
15- `core_internal.inc`: internal definitions shared by all three. It covers Reed–Solomon, CRC, layouts, sampling, the style checker and localization helpers, all with internal linkage.
16- `api_codec.inc`, `api_scan.inc`, `api_render.inc`: the `extern "C"` functions of each library.
17- `scalable_render.inc`: the Profile 0 geometry engine and its native backends. `api_render.inc` includes it.
18- `ckey.cpp`: the amalgamation, which includes all the parts once. The Xcode projects compile it as a single file, and the white-box tests include it.
19- `svg_raster.h`: the reference SVG rasterizer. It is used only by tests and tools; no library includes it.
20
21A scan-only build has no renderer or telemetry code, and CI proves it: `ckey_optical_image_decode` links `ckey_scan` alone. Builds for OS vendors can configure with `-DCKEY_BUILD_TELEMETRY=OFF`.