CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
QrRaster.h
Go to the documentation of this file.
1
9
10#pragma once
11
12#include <cstddef>
13#include <cstdint>
14
15namespace cdc::ui::qr {
16
18inline constexpr uint16_t QR_MAX_SIDE_PX = 1024;
19
33inline void packModule(uint8_t* out, uint16_t stride, uint8_t scale, uint8_t quiet,
34 int mx, int my)
35{
36 const int px0 = (quiet + mx) * scale;
37 const int py0 = (quiet + my) * scale;
38 for (int dy = 0; dy < scale; dy++) {
39 uint8_t* row = out + static_cast<size_t>(py0 + dy) * stride;
40 for (int dx = 0; dx < scale; dx++) {
41 const int px = px0 + dx;
42 row[px >> 3] |= static_cast<uint8_t>(0x80u >> (px & 7));
43 }
44 }
45}
46
55int measure(const char* data, uint8_t max_version, uint8_t ecc, uint16_t* out_modules);
56
74int render(const char* data, uint8_t max_version, uint8_t ecc,
75 uint8_t scale, uint8_t quiet_modules,
76 uint8_t* out, size_t out_size,
77 uint16_t* out_stride_bytes, uint16_t* out_height_px);
78
79} // namespace cdc::ui::qr
void packModule(uint8_t *out, uint16_t stride, uint8_t scale, uint8_t quiet, int mx, int my)
Sets the packed pixels of one black QR module.
Definition QrRaster.h:33
constexpr uint16_t QR_MAX_SIDE_PX
Hard cap on the rendered side length in pixels (incl. quiet zone, scaled).
Definition QrRaster.h:18
int measure(const char *data, uint8_t max_version, uint8_t ecc, uint16_t *out_modules)
Measures the module count for data without rendering.
Definition QrRaster.cpp:73