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
Sign in with GitHub to download. Each download is recorded with your GitHub username.
| 1 | # Core source layout |
| 2 | |
| 3 | The 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 | |
| 13 | Each 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 | |
| 21 | A 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`. |